llvm-project/libcxx/modules/std/concepts.cppm
Mark de Wever c40595f2ce [libc++][modules] Adds std module cppm files.
This adds the cppm files of D144994. These files by themselves will do
nothing. The goal is to reduce the size of D144994 and making it easier
to review the real changes of the patch.

Implements parts of
- P2465R3 Standard Library Modules std and std.compat

Reviewed By: ldionne, ChuanqiXu, aaronmondal, #libc

Differential Revision: https://reviews.llvm.org/D151030
2023-05-23 18:51:27 +02:00

101 lines
2.7 KiB
C++

// -*- 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