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_INDIRECTLY_COMPARABLE_H12#define _LIBCUDACXX___ITERATOR_INDIRECTLY_COMPARABLE_H13 14#ifndef __cuda_std__15#include <__config>16#endif // __cuda_std__17 18#include "../__functional/identity.h"19#include "../__iterator/concepts.h"20#include "../__iterator/projected.h"21 22#if defined(_CCCL_IMPLICIT_SYSTEM_HEADER_GCC)23# pragma GCC system_header24#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_CLANG)25# pragma clang system_header26#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_MSVC)27# pragma system_header28#endif // no system header29 30_LIBCUDACXX_BEGIN_NAMESPACE_STD31 32#if _LIBCUDACXX_STD_VER > 1733 34template <class _Iter1, class _Iter2, class _BinaryPred,35 class _Proj1 = identity, class _Proj2 = identity>36concept indirectly_comparable =37 indirect_binary_predicate<_BinaryPred, projected<_Iter1, _Proj1>,38 projected<_Iter2, _Proj2>>;39 40#elif _LIBCUDACXX_STD_VER > 1441 42// clang-format off43 44template <class _Iter1, class _Iter2, class _BinaryPred, class _Proj1, class _Proj2>45_LIBCUDACXX_CONCEPT_FRAGMENT(46 __indirectly_comparable_,47 requires()(48 requires(indirect_binary_predicate<_BinaryPred, projected<_Iter1, _Proj1>, projected<_Iter2, _Proj2>>)49 ));50 51template <class _Iter1, class _Iter2, class _BinaryPred, class _Proj1 = identity, class _Proj2 = identity>52_LIBCUDACXX_CONCEPT indirectly_comparable =53 _LIBCUDACXX_FRAGMENT(__indirectly_comparable_, _Iter1, _Iter2, _BinaryPred, _Proj1, _Proj2);54 55// clang-format on56 57#endif // _LIBCUDACXX_STD_VER > 1458 59_LIBCUDACXX_END_NAMESPACE_STD60 61#endif // _LIBCUDACXX___ITERATOR_INDIRECTLY_COMPARABLE_H62 