xref: /llvm-project/libcxx/include/__iterator/permutable.h (revision 9783f28cbb155e4a8d49c12e1c60ce14dcfaf0c7)
18f1d8785SKonstantin Varlamov // -*- C++ -*-
28f1d8785SKonstantin Varlamov //===----------------------------------------------------------------------===//
38f1d8785SKonstantin Varlamov //
48f1d8785SKonstantin Varlamov // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
58f1d8785SKonstantin Varlamov // See https://llvm.org/LICENSE.txt for license information.
68f1d8785SKonstantin Varlamov // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
78f1d8785SKonstantin Varlamov //
88f1d8785SKonstantin Varlamov //===----------------------------------------------------------------------===//
98f1d8785SKonstantin Varlamov 
108f1d8785SKonstantin Varlamov #ifndef _LIBCPP___ITERATOR_PERMUTABLE_H
118f1d8785SKonstantin Varlamov #define _LIBCPP___ITERATOR_PERMUTABLE_H
128f1d8785SKonstantin Varlamov 
138f1d8785SKonstantin Varlamov #include <__config>
148f1d8785SKonstantin Varlamov #include <__iterator/concepts.h>
158f1d8785SKonstantin Varlamov #include <__iterator/iter_swap.h>
168f1d8785SKonstantin Varlamov 
178f1d8785SKonstantin Varlamov #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
188f1d8785SKonstantin Varlamov #  pragma GCC system_header
198f1d8785SKonstantin Varlamov #endif
208f1d8785SKonstantin Varlamov 
218f1d8785SKonstantin Varlamov _LIBCPP_BEGIN_NAMESPACE_STD
228f1d8785SKonstantin Varlamov 
234f15267dSNikolas Klauser #if _LIBCPP_STD_VER >= 20
248f1d8785SKonstantin Varlamov 
258f1d8785SKonstantin Varlamov template <class _Iterator>
268f1d8785SKonstantin Varlamov concept permutable =
27*9783f28cSLouis Dionne     forward_iterator<_Iterator> && indirectly_movable_storable<_Iterator, _Iterator> &&
288f1d8785SKonstantin Varlamov     indirectly_swappable<_Iterator, _Iterator>;
298f1d8785SKonstantin Varlamov 
304f15267dSNikolas Klauser #endif // _LIBCPP_STD_VER >= 20
318f1d8785SKonstantin Varlamov 
328f1d8785SKonstantin Varlamov _LIBCPP_END_NAMESPACE_STD
338f1d8785SKonstantin Varlamov 
348f1d8785SKonstantin Varlamov #endif // _LIBCPP___ITERATOR_PERMUTABLE_H
35