Warning, /include/c++/v1/__cxx03/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___CXX03_CONCEPTS
0011 #define _LIBCPP___CXX03_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 #include <__cxx03/__config>
0133
0134 #if _LIBCPP_STD_VER >= 20
0135 # include <__cxx03/__concepts/arithmetic.h>
0136 # include <__cxx03/__concepts/assignable.h>
0137 # include <__cxx03/__concepts/boolean_testable.h>
0138 # include <__cxx03/__concepts/class_or_enum.h>
0139 # include <__cxx03/__concepts/common_reference_with.h>
0140 # include <__cxx03/__concepts/common_with.h>
0141 # include <__cxx03/__concepts/constructible.h>
0142 # include <__cxx03/__concepts/convertible_to.h>
0143 # include <__cxx03/__concepts/copyable.h>
0144 # include <__cxx03/__concepts/derived_from.h>
0145 # include <__cxx03/__concepts/destructible.h>
0146 # include <__cxx03/__concepts/different_from.h>
0147 # include <__cxx03/__concepts/equality_comparable.h>
0148 # include <__cxx03/__concepts/invocable.h>
0149 # include <__cxx03/__concepts/movable.h>
0150 # include <__cxx03/__concepts/predicate.h>
0151 # include <__cxx03/__concepts/regular.h>
0152 # include <__cxx03/__concepts/relation.h>
0153 # include <__cxx03/__concepts/same_as.h>
0154 # include <__cxx03/__concepts/semiregular.h>
0155 # include <__cxx03/__concepts/swappable.h>
0156 # include <__cxx03/__concepts/totally_ordered.h>
0157 #endif // _LIBCPP_STD_VER >= 20
0158
0159 #include <__cxx03/version>
0160
0161 #if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 17
0162 # include <__cxx03/cstddef>
0163 #endif
0164
0165 #if _LIBCPP_STD_VER <= 20 && !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES)
0166 # include <__cxx03/type_traits>
0167 #endif
0168
0169 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
0170 # pragma GCC system_header
0171 #endif
0172
0173 #endif // _LIBCPP___CXX03_CONCEPTS