aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/cxxsupp/libcxx/include/concepts
blob: 10b14c98b9bc19bb3dd130775513d9a4b594f1fd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
// -*- C++ -*- 
//===----------------------------------------------------------------------===// 
// 
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 
// See https://llvm.org/LICENSE.txt for license information. 
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 
// 
//===----------------------------------------------------------------------===// 
 
#ifndef _LIBCPP_CONCEPTS 
#define _LIBCPP_CONCEPTS 
 
/* 
    concepts synopsis 
namespace std { 
  // [concepts.lang], language-related concepts 
  // [concept.same], concept same_as 
  template<class T, class U> 
    concept same_as = see below; 
 
  // [concept.derived], concept derived_from 
  template<class Derived, class Base> 
    concept derived_from = see below; 
 
  // [concept.convertible], concept convertible_to 
  template<class From, class To> 
    concept convertible_to = see below; 
 
  // [concept.commonref], concept common_reference_with 
  template<class T, class U> 
    concept common_reference_with = see below; 
 
  // [concept.common], concept common_with 
  template<class T, class U> 
    concept common_with = see below; 
 
  // [concepts.arithmetic], arithmetic concepts 
  template<class T> 
    concept integral = see below; 
  template<class T> 
    concept signed_integral = see below; 
  template<class T> 
    concept unsigned_integral = see below; 
  template<class T> 
    concept floating_point = see below; 
 
  // [concept.assignable], concept assignable_from 
  template<class LHS, class RHS> 
    concept assignable_from = see below; 
 
  // [concept.swappable], concept swappable 
  namespace ranges { 
    inline namespace unspecified { 
      inline constexpr unspecified swap = unspecified; 
    } 
  } 
  template<class T> 
    concept swappable = see below; 
  template<class T, class U> 
    concept swappable_with = see below; 
 
  // [concept.destructible], concept destructible 
  template<class T> 
    concept destructible = see below; 
 
  // [concept.constructible], concept constructible_from 
  template<class T, class... Args> 
    concept constructible_from = see below; 
 
  // [concept.default.init], concept default_initializable 
  template<class T> 
    concept default_initializable = see below; 
 
  // [concept.moveconstructible], concept move_constructible 
  template<class T> 
    concept move_constructible = see below; 
 
  // [concept.copyconstructible], concept copy_constructible 
  template<class T> 
    concept copy_constructible = see below; 
 
  // [concept.equalitycomparable], concept equality_comparable 
  template<class T> 
    concept equality_comparable = see below; 
  template<class T, class U> 
    concept equality_comparable_with = see below; 
 
  // [concept.totallyordered], concept totally_ordered 
  template<class T> 
    concept totally_ordered = see below; 
  template<class T, class U> 
    concept totally_ordered_with = see below; 
 
  // [concepts.object], object concepts 
  template<class T> 
    concept movable = see below; 
  template<class T> 
    concept copyable = see below; 
  template<class T> 
    concept semiregular = see below; 
  template<class T> 
    concept regular = see below; 
 
  // [concepts.callable], callable concepts 
  // [concept.invocable], concept invocable 
  template<class F, class... Args> 
    concept invocable = see below; 
 
  // [concept.regularinvocable], concept regular_invocable 
  template<class F, class... Args> 
    concept regular_invocable = see below; 
 
  // [concept.predicate], concept predicate 
  template<class F, class... Args> 
    concept predicate = see below; 
 
  // [concept.relation], concept relation 
  template<class R, class T, class U> 
    concept relation = see below; 
 
  // [concept.equiv], concept equivalence_relation 
  template<class R, class T, class U> 
    concept equivalence_relation = see below; 
 
  // [concept.strictweakorder], concept strict_weak_order 
  template<class R, class T, class U> 
    concept strict_weak_order = see below; 
} 
 
*/ 
 
#include <__concepts/arithmetic.h> 
#include <__concepts/assignable.h> 
#include <__concepts/boolean_testable.h> 
#include <__concepts/class_or_enum.h> 
#include <__concepts/common_reference_with.h> 
#include <__concepts/common_with.h> 
#include <__concepts/constructible.h> 
#include <__concepts/convertible_to.h> 
#include <__concepts/copyable.h> 
#include <__concepts/derived_from.h> 
#include <__concepts/destructible.h> 
#include <__concepts/different_from.h> 
#include <__concepts/equality_comparable.h> 
#include <__concepts/invocable.h> 
#include <__concepts/movable.h> 
#include <__concepts/predicate.h> 
#include <__concepts/regular.h> 
#include <__concepts/relation.h> 
#include <__concepts/same_as.h> 
#include <__concepts/semiregular.h> 
#include <__concepts/swappable.h> 
#include <__concepts/totally_ordered.h> 
#include <__config> 
#include <version> 
 
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 
#pragma GCC system_header 
#endif 
 
#endif // _LIBCPP_CONCEPTS