Back to home page

EIC code displayed by LXR

 
 

    


Warning, /include/c++/v1/concepts is written in an unsupported language. File is not indexed.

0001 // -*- C++ -*-
0002 //===----------------------------------------------------------------------===//
0003 //
0004 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0005 // See https://llvm.org/LICENSE.txt for license information.
0006 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0007 //
0008 //===----------------------------------------------------------------------===//
0009 
0010 #ifndef _LIBCPP_CONCEPTS
0011 #define _LIBCPP_CONCEPTS
0012 
0013 /*
0014     concepts synopsis
0015 namespace std {
0016   // [concepts.lang], language-related concepts
0017   // [concept.same], concept same_as
0018   template<class T, class U>
0019     concept same_as = see below;
0020 
0021   // [concept.derived], concept derived_from
0022   template<class Derived, class Base>
0023     concept derived_from = see below;
0024 
0025   // [concept.convertible], concept convertible_to
0026   template<class From, class To>
0027     concept convertible_to = see below;
0028 
0029   // [concept.commonref], concept common_reference_with
0030   template<class T, class U>
0031     concept common_reference_with = see below;
0032 
0033   // [concept.common], concept common_with
0034   template<class T, class U>
0035     concept common_with = see below;
0036 
0037   // [concepts.arithmetic], arithmetic concepts
0038   template<class T>
0039     concept integral = see below;
0040   template<class T>
0041     concept signed_integral = see below;
0042   template<class T>
0043     concept unsigned_integral = see below;
0044   template<class T>
0045     concept floating_point = see below;
0046 
0047   // [concept.assignable], concept assignable_from
0048   template<class LHS, class RHS>
0049     concept assignable_from = see below;
0050 
0051   // [concept.swappable], concept swappable
0052   namespace ranges {
0053     inline namespace unspecified {
0054       inline constexpr unspecified swap = unspecified;
0055     }
0056   }
0057   template<class T>
0058     concept swappable = see below;
0059   template<class T, class U>
0060     concept swappable_with = see below;
0061 
0062   // [concept.destructible], concept destructible
0063   template<class T>
0064     concept destructible = see below;
0065 
0066   // [concept.constructible], concept constructible_from
0067   template<class T, class... Args>
0068     concept constructible_from = see below;
0069 
0070   // [concept.default.init], concept default_initializable
0071   template<class T>
0072     concept default_initializable = see below;
0073 
0074   // [concept.moveconstructible], concept move_constructible
0075   template<class T>
0076     concept move_constructible = see below;
0077 
0078   // [concept.copyconstructible], concept copy_constructible
0079   template<class T>
0080     concept copy_constructible = see below;
0081 
0082   // [concept.equalitycomparable], concept equality_comparable
0083   template<class T>
0084     concept equality_comparable = see below;
0085   template<class T, class U>
0086     concept equality_comparable_with = see below;
0087 
0088   // [concept.totallyordered], concept totally_ordered
0089   template<class T>
0090     concept totally_ordered = see below;
0091   template<class T, class U>
0092     concept totally_ordered_with = see below;
0093 
0094   // [concepts.object], object concepts
0095   template<class T>
0096     concept movable = see below;
0097   template<class T>
0098     concept copyable = see below;
0099   template<class T>
0100     concept semiregular = see below;
0101   template<class T>
0102     concept regular = see below;
0103 
0104   // [concepts.callable], callable concepts
0105   // [concept.invocable], concept invocable
0106   template<class F, class... Args>
0107     concept invocable = see below;
0108 
0109   // [concept.regularinvocable], concept regular_invocable
0110   template<class F, class... Args>
0111     concept regular_invocable = see below;
0112 
0113   // [concept.predicate], concept predicate
0114   template<class F, class... Args>
0115     concept predicate = see below;
0116 
0117   // [concept.relation], concept relation
0118   template<class R, class T, class U>
0119     concept relation = see below;
0120 
0121   // [concept.equiv], concept equivalence_relation
0122   template<class R, class T, class U>
0123     concept equivalence_relation = see below;
0124 
0125   // [concept.strictweakorder], concept strict_weak_order
0126   template<class R, class T, class U>
0127     concept strict_weak_order = see below;
0128 }
0129 
0130 */
0131 
0132 #if __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)
0133 #  include <__cxx03/concepts>
0134 #else
0135 #  include <__config>
0136 
0137 #  if _LIBCPP_STD_VER >= 20
0138 #    include <__concepts/arithmetic.h>
0139 #    include <__concepts/assignable.h>
0140 #    include <__concepts/boolean_testable.h>
0141 #    include <__concepts/class_or_enum.h>
0142 #    include <__concepts/common_reference_with.h>
0143 #    include <__concepts/common_with.h>
0144 #    include <__concepts/constructible.h>
0145 #    include <__concepts/convertible_to.h>
0146 #    include <__concepts/copyable.h>
0147 #    include <__concepts/derived_from.h>
0148 #    include <__concepts/destructible.h>
0149 #    include <__concepts/different_from.h>
0150 #    include <__concepts/equality_comparable.h>
0151 #    include <__concepts/invocable.h>
0152 #    include <__concepts/movable.h>
0153 #    include <__concepts/predicate.h>
0154 #    include <__concepts/regular.h>
0155 #    include <__concepts/relation.h>
0156 #    include <__concepts/same_as.h>
0157 #    include <__concepts/semiregular.h>
0158 #    include <__concepts/swappable.h>
0159 #    include <__concepts/totally_ordered.h>
0160 #  endif // _LIBCPP_STD_VER >= 20
0161 
0162 #  include <version>
0163 
0164 #  if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
0165 #    include <cstddef>
0166 #    include <type_traits>
0167 #  endif
0168 
0169 #  if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
0170 #    pragma GCC system_header
0171 #  endif
0172 #endif // __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)
0173 
0174 #endif // _LIBCPP_CONCEPTS