codekingpro/portable-devtools
114k
1// -*- C++ -*-2//===----------------------------------------------------------------------===//3//4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.5// See https://llvm.org/LICENSE.txt for license information.6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception7// SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES8//9//===----------------------------------------------------------------------===//10 11#ifndef _LIBCUDACXX___ITERATOR_PERMUTABLE_H12#define _LIBCUDACXX___ITERATOR_PERMUTABLE_H13 14#ifndef __cuda_std__15#include <__config>16#endif // __cuda_std__17 18#include "../__iterator/concepts.h"19#include "../__iterator/iter_swap.h"20 21#if defined(_CCCL_IMPLICIT_SYSTEM_HEADER_GCC)22# pragma GCC system_header23#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_CLANG)24# pragma clang system_header25#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_MSVC)26# pragma system_header27#endif // no system header28 29_LIBCUDACXX_BEGIN_NAMESPACE_STD30 31#if _LIBCUDACXX_STD_VER > 1732 33template <class _Iterator>34concept permutable =35 forward_iterator<_Iterator> &&36 indirectly_movable_storable<_Iterator, _Iterator> &&37 indirectly_swappable<_Iterator, _Iterator>;38 39#elif _LIBCUDACXX_STD_VER > 1440 41template<class _Iterator>42_LIBCUDACXX_CONCEPT_FRAGMENT(43 __permutable_,44 requires()(45 requires(forward_iterator<_Iterator>),46 requires(indirectly_movable_storable<_Iterator, _Iterator>),47 requires(indirectly_swappable<_Iterator, _Iterator>)48 ));49 50template <class _Iterator>51_LIBCUDACXX_CONCEPT permutable = _LIBCUDACXX_FRAGMENT(__permutable_, _Iterator);52 53#endif // _LIBCUDACXX_STD_VER > 1454 55_LIBCUDACXX_END_NAMESPACE_STD56 57#endif // _LIBCUDACXX___ITERATOR_PERMUTABLE_H58 