xref: /freebsd/contrib/llvm-project/libcxx/modules/std/concepts.inc (revision 5f757f3ff9144b609b3c433dfd370cc6bdc191ad)
1*5f757f3fSDimitry Andric// -*- C++ -*-
2*5f757f3fSDimitry Andric//===----------------------------------------------------------------------===//
3*5f757f3fSDimitry Andric//
4*5f757f3fSDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5*5f757f3fSDimitry Andric// See https://llvm.org/LICENSE.txt for license information.
6*5f757f3fSDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7*5f757f3fSDimitry Andric//
8*5f757f3fSDimitry Andric//===----------------------------------------------------------------------===//
9*5f757f3fSDimitry Andric
10*5f757f3fSDimitry Andricexport namespace std {
11*5f757f3fSDimitry Andric
12*5f757f3fSDimitry Andric  // [concepts.lang], language-related concepts
13*5f757f3fSDimitry Andric  // [concept.same], concept same_as
14*5f757f3fSDimitry Andric  using std::same_as;
15*5f757f3fSDimitry Andric
16*5f757f3fSDimitry Andric  // [concept.derived], concept derived_from
17*5f757f3fSDimitry Andric  using std::derived_from;
18*5f757f3fSDimitry Andric
19*5f757f3fSDimitry Andric  // [concept.convertible], concept convertible_to
20*5f757f3fSDimitry Andric  using std::convertible_to;
21*5f757f3fSDimitry Andric
22*5f757f3fSDimitry Andric  // [concept.commonref], concept common_reference_with
23*5f757f3fSDimitry Andric  using std::common_reference_with;
24*5f757f3fSDimitry Andric
25*5f757f3fSDimitry Andric  // [concept.common], concept common_with
26*5f757f3fSDimitry Andric  using std::common_with;
27*5f757f3fSDimitry Andric
28*5f757f3fSDimitry Andric  // [concepts.arithmetic], arithmetic concepts
29*5f757f3fSDimitry Andric  using std::floating_point;
30*5f757f3fSDimitry Andric  using std::integral;
31*5f757f3fSDimitry Andric  using std::signed_integral;
32*5f757f3fSDimitry Andric  using std::unsigned_integral;
33*5f757f3fSDimitry Andric
34*5f757f3fSDimitry Andric  // [concept.assignable], concept assignable_from
35*5f757f3fSDimitry Andric  using std::assignable_from;
36*5f757f3fSDimitry Andric
37*5f757f3fSDimitry Andric  // [concept.swappable], concept swappable
38*5f757f3fSDimitry Andric  namespace ranges {
39*5f757f3fSDimitry Andric    inline namespace __cpo {
40*5f757f3fSDimitry Andric      using std::ranges::__cpo::swap;
41*5f757f3fSDimitry Andric    }
42*5f757f3fSDimitry Andric  } // namespace ranges
43*5f757f3fSDimitry Andric
44*5f757f3fSDimitry Andric  using std::swappable;
45*5f757f3fSDimitry Andric  using std::swappable_with;
46*5f757f3fSDimitry Andric
47*5f757f3fSDimitry Andric  // [concept.destructible], concept destructible
48*5f757f3fSDimitry Andric  using std::destructible;
49*5f757f3fSDimitry Andric
50*5f757f3fSDimitry Andric  // [concept.constructible], concept constructible_from
51*5f757f3fSDimitry Andric  using std::constructible_from;
52*5f757f3fSDimitry Andric
53*5f757f3fSDimitry Andric  // [concept.default.init], concept default_initializable
54*5f757f3fSDimitry Andric  using std::default_initializable;
55*5f757f3fSDimitry Andric
56*5f757f3fSDimitry Andric  // [concept.moveconstructible], concept move_constructible
57*5f757f3fSDimitry Andric  using std::move_constructible;
58*5f757f3fSDimitry Andric
59*5f757f3fSDimitry Andric  // [concept.copyconstructible], concept copy_constructible
60*5f757f3fSDimitry Andric  using std::copy_constructible;
61*5f757f3fSDimitry Andric
62*5f757f3fSDimitry Andric  // [concepts.compare], comparison concepts
63*5f757f3fSDimitry Andric  // [concept.equalitycomparable], concept equality_comparable
64*5f757f3fSDimitry Andric  using std::equality_comparable;
65*5f757f3fSDimitry Andric  using std::equality_comparable_with;
66*5f757f3fSDimitry Andric
67*5f757f3fSDimitry Andric  // [concept.totallyordered], concept totally_ordered
68*5f757f3fSDimitry Andric  using std::totally_ordered;
69*5f757f3fSDimitry Andric  using std::totally_ordered_with;
70*5f757f3fSDimitry Andric
71*5f757f3fSDimitry Andric  // [concepts.object], object concepts
72*5f757f3fSDimitry Andric  using std::copyable;
73*5f757f3fSDimitry Andric  using std::movable;
74*5f757f3fSDimitry Andric  using std::regular;
75*5f757f3fSDimitry Andric  using std::semiregular;
76*5f757f3fSDimitry Andric
77*5f757f3fSDimitry Andric  // [concepts.callable], callable concepts
78*5f757f3fSDimitry Andric  // [concept.invocable], concept invocable
79*5f757f3fSDimitry Andric  using std::invocable;
80*5f757f3fSDimitry Andric
81*5f757f3fSDimitry Andric  // [concept.regularinvocable], concept regular_invocable
82*5f757f3fSDimitry Andric  using std::regular_invocable;
83*5f757f3fSDimitry Andric
84*5f757f3fSDimitry Andric  // [concept.predicate], concept predicate
85*5f757f3fSDimitry Andric  using std::predicate;
86*5f757f3fSDimitry Andric
87*5f757f3fSDimitry Andric  // [concept.relation], concept relation
88*5f757f3fSDimitry Andric  using std::relation;
89*5f757f3fSDimitry Andric
90*5f757f3fSDimitry Andric  // [concept.equiv], concept equivalence_relation
91*5f757f3fSDimitry Andric  using std::equivalence_relation;
92*5f757f3fSDimitry Andric
93*5f757f3fSDimitry Andric  // [concept.strictweakorder], concept strict_weak_order
94*5f757f3fSDimitry Andric  using std::strict_weak_order;
95*5f757f3fSDimitry Andric
96*5f757f3fSDimitry Andric} // namespace std
97