brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.2 KiB · 47e31d0 Raw
175 lines · plain
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//8//===----------------------------------------------------------------------===//9 10#ifndef _LIBCPP_CONCEPTS11#define _LIBCPP_CONCEPTS12 13/*14    concepts synopsis15namespace std {16  // [concepts.lang], language-related concepts17  // [concept.same], concept same_as18  template<class T, class U>19    concept same_as = see below;20 21  // [concept.derived], concept derived_from22  template<class Derived, class Base>23    concept derived_from = see below;24 25  // [concept.convertible], concept convertible_to26  template<class From, class To>27    concept convertible_to = see below;28 29  // [concept.commonref], concept common_reference_with30  template<class T, class U>31    concept common_reference_with = see below;32 33  // [concept.common], concept common_with34  template<class T, class U>35    concept common_with = see below;36 37  // [concepts.arithmetic], arithmetic concepts38  template<class T>39    concept integral = see below;40  template<class T>41    concept signed_integral = see below;42  template<class T>43    concept unsigned_integral = see below;44  template<class T>45    concept floating_point = see below;46 47  // [concept.assignable], concept assignable_from48  template<class LHS, class RHS>49    concept assignable_from = see below;50 51  // [concept.swappable], concept swappable52  namespace ranges {53    inline namespace unspecified {54      inline constexpr unspecified swap = unspecified;55    }56  }57  template<class T>58    concept swappable = see below;59  template<class T, class U>60    concept swappable_with = see below;61 62  // [concept.destructible], concept destructible63  template<class T>64    concept destructible = see below;65 66  // [concept.constructible], concept constructible_from67  template<class T, class... Args>68    concept constructible_from = see below;69 70  // [concept.default.init], concept default_initializable71  template<class T>72    concept default_initializable = see below;73 74  // [concept.moveconstructible], concept move_constructible75  template<class T>76    concept move_constructible = see below;77 78  // [concept.copyconstructible], concept copy_constructible79  template<class T>80    concept copy_constructible = see below;81 82  // [concept.equalitycomparable], concept equality_comparable83  template<class T>84    concept equality_comparable = see below;85  template<class T, class U>86    concept equality_comparable_with = see below;87 88  // [concept.totallyordered], concept totally_ordered89  template<class T>90    concept totally_ordered = see below;91  template<class T, class U>92    concept totally_ordered_with = see below;93 94  // [concepts.object], object concepts95  template<class T>96    concept movable = see below;97  template<class T>98    concept copyable = see below;99  template<class T>100    concept semiregular = see below;101  template<class T>102    concept regular = see below;103 104  // [concepts.callable], callable concepts105  // [concept.invocable], concept invocable106  template<class F, class... Args>107    concept invocable = see below;108 109  // [concept.regularinvocable], concept regular_invocable110  template<class F, class... Args>111    concept regular_invocable = see below;112 113  // [concept.predicate], concept predicate114  template<class F, class... Args>115    concept predicate = see below;116 117  // [concept.relation], concept relation118  template<class R, class T, class U>119    concept relation = see below;120 121  // [concept.equiv], concept equivalence_relation122  template<class R, class T, class U>123    concept equivalence_relation = see below;124 125  // [concept.strictweakorder], concept strict_weak_order126  template<class R, class T, class U>127    concept strict_weak_order = see below;128}129 130*/131 132#if __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)133#  include <__cxx03/__config>134#else135#  include <__config>136 137#  if _LIBCPP_STD_VER >= 20138#    include <__concepts/arithmetic.h>139#    include <__concepts/assignable.h>140#    include <__concepts/boolean_testable.h>141#    include <__concepts/class_or_enum.h>142#    include <__concepts/common_reference_with.h>143#    include <__concepts/common_with.h>144#    include <__concepts/constructible.h>145#    include <__concepts/convertible_to.h>146#    include <__concepts/copyable.h>147#    include <__concepts/derived_from.h>148#    include <__concepts/destructible.h>149#    include <__concepts/different_from.h>150#    include <__concepts/equality_comparable.h>151#    include <__concepts/invocable.h>152#    include <__concepts/movable.h>153#    include <__concepts/predicate.h>154#    include <__concepts/regular.h>155#    include <__concepts/relation.h>156#    include <__concepts/same_as.h>157#    include <__concepts/semiregular.h>158#    include <__concepts/swappable.h>159#    include <__concepts/totally_ordered.h>160#  endif // _LIBCPP_STD_VER >= 20161 162#  include <version>163 164#  if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20165#    include <cstddef>166#    include <type_traits>167#  endif168 169#  if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)170#    pragma GCC system_header171#  endif172#endif // __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)173 174#endif // _LIBCPP_CONCEPTS175