| // -*- 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 |
| // |
| //===----------------------------------------------------------------------===// |
| |
| module; |
| #include <concepts> |
| |
| export module std:concepts; |
| export namespace std { |
| |
| // [concepts.lang], language-related concepts |
| // [concept.same], concept same_as |
| using std::same_as; |
| |
| // [concept.derived], concept derived_from |
| using std::derived_from; |
| |
| // [concept.convertible], concept convertible_to |
| using std::convertible_to; |
| |
| // [concept.commonref], concept common_reference_with |
| using std::common_reference_with; |
| |
| // [concept.common], concept common_with |
| using std::common_with; |
| |
| // [concepts.arithmetic], arithmetic concepts |
| using std::floating_point; |
| using std::integral; |
| using std::signed_integral; |
| using std::unsigned_integral; |
| |
| // [concept.assignable], concept assignable_from |
| using std::assignable_from; |
| |
| // [concept.swappable], concept swappable |
| namespace ranges { |
| inline namespace __cpo { |
| using std::ranges::__cpo::swap; |
| } |
| } // namespace ranges |
| |
| using std::swappable; |
| using std::swappable_with; |
| |
| // [concept.destructible], concept destructible |
| using std::destructible; |
| |
| // [concept.constructible], concept constructible_from |
| using std::constructible_from; |
| |
| // [concept.default.init], concept default_initializable |
| using std::default_initializable; |
| |
| // [concept.moveconstructible], concept move_constructible |
| using std::move_constructible; |
| |
| // [concept.copyconstructible], concept copy_constructible |
| using std::copy_constructible; |
| |
| // [concepts.compare], comparison concepts |
| // [concept.equalitycomparable], concept equality_comparable |
| using std::equality_comparable; |
| using std::equality_comparable_with; |
| |
| // [concept.totallyordered], concept totally_ordered |
| using std::totally_ordered; |
| using std::totally_ordered_with; |
| |
| // [concepts.object], object concepts |
| using std::copyable; |
| using std::movable; |
| using std::regular; |
| using std::semiregular; |
| |
| // [concepts.callable], callable concepts |
| // [concept.invocable], concept invocable |
| using std::invocable; |
| |
| // [concept.regularinvocable], concept regular_invocable |
| using std::regular_invocable; |
| |
| // [concept.predicate], concept predicate |
| using std::predicate; |
| |
| // [concept.relation], concept relation |
| using std::relation; |
| |
| // [concept.equiv], concept equivalence_relation |
| using std::equivalence_relation; |
| |
| // [concept.strictweakorder], concept strict_weak_order |
| using std::strict_weak_order; |
| |
| } // namespace std |