[concepts.syn]

# 18 Concepts library [[concepts]](./#concepts)

## 18.3 Header <concepts> synopsis [concepts.syn]

[ð](#header:%3cconcepts%3e)

// all freestandingnamespace std {// [[concepts.lang]](concepts.lang "18.4 Language-related concepts"), language-related concepts// [[concept.same]](concept.same "18.4.2 Concept same_­as"), concept [same_as](concept.same#concept:same_as "18.4.2 Concept same_­as [concept.same]")template<class T, class U>concept same_as = *see below*; // [[concept.derived]](concept.derived "18.4.3 Concept derived_­from"), concept [derived_from](concept.derived#concept:derived_from "18.4.3 Concept derived_­from [concept.derived]")template<class Derived, class Base>concept derived_from = *see below*; // [[concept.convertible]](concept.convertible "18.4.4 Concept convertible_­to"), concept [convertible_to](concept.convertible#concept:convertible_to "18.4.4 Concept convertible_­to [concept.convertible]")template<class From, class To>concept convertible_to = *see below*; // [[concept.commonref]](concept.commonref "18.4.5 Concept common_­reference_­with"), concept [common_reference_with](concept.commonref#concept:common_reference_with "18.4.5 Concept common_­reference_­with [concept.commonref]")template<class T, class U>concept common_reference_with = *see below*; // [[concept.common]](concept.common "18.4.6 Concept common_­with"), concept [common_with](concept.common#concept:common_with "18.4.6 Concept common_­with [concept.common]")template<class T, class U>concept common_with = *see below*; // [[concepts.arithmetic]](concepts.arithmetic "18.4.7 Arithmetic concepts"), arithmetic conceptstemplate<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 "18.4.8 Concept assignable_­from"), concept [assignable_from](concept.assignable#concept:assignable_from "18.4.8 Concept assignable_­from [concept.assignable]")template<class LHS, class RHS>concept assignable_from = *see below*; // [[concept.swappable]](concept.swappable "18.4.9 Concept swappable"), concept [swappable](concept.swappable#concept:swappable "18.4.9 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 "18.4.10 Concept destructible"), concept [destructible](concept.destructible#concept:destructible "18.4.10 Concept destructible [concept.destructible]")template<class T>concept destructible = *see below*; // [[concept.constructible]](concept.constructible "18.4.11 Concept constructible_­from"), concept [constructible_from](concept.constructible#concept:constructible_from "18.4.11 Concept constructible_­from [concept.constructible]")template<class T, class... Args>concept constructible_from = *see below*; // [[concept.default.init]](concept.default.init "18.4.12 Concept default_­initializable"), concept [default_initializable](concept.default.init#concept:default_initializable "18.4.12 Concept default_­initializable [concept.default.init]")template<class T>concept default_initializable = *see below*; // [[concept.moveconstructible]](concept.moveconstructible "18.4.13 Concept move_­constructible"), concept [move_constructible](concept.moveconstructible#concept:move_constructible "18.4.13 Concept move_­constructible [concept.moveconstructible]")template<class T>concept move_constructible = *see below*; // [[concept.copyconstructible]](concept.copyconstructible "18.4.14 Concept copy_­constructible"), concept [copy_constructible](concept.copyconstructible#concept:copy_constructible "18.4.14 Concept copy_­constructible [concept.copyconstructible]")template<class T>concept copy_constructible = *see below*; // [[concepts.compare]](concepts.compare "18.5 Comparison concepts"), comparison concepts// [[concept.equalitycomparable]](concept.equalitycomparable "18.5.4 Concept equality_­comparable"), concept [equality_comparable](concept.equalitycomparable#concept:equality_comparable "18.5.4 Concept equality_­comparable [concept.equalitycomparable]")template<class T>concept equality_comparable = *see below*; template<class T, class U>concept equality_comparable_with = *see below*; // [[concept.totallyordered]](concept.totallyordered "18.5.5 Concept totally_­ordered"), concept [totally_ordered](concept.totallyordered#concept:totally_ordered "18.5.5 Concept totally_­ordered [concept.totallyordered]")template<class T>concept totally_ordered = *see below*; template<class T, class U>concept totally_ordered_with = *see below*; // [[concepts.object]](concepts.object "18.6 Object concepts"), object conceptstemplate<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]](concepts.callable "18.7 Callable concepts"), callable concepts// [[concept.invocable]](concept.invocable "18.7.2 Concept invocable"), concept [invocable](concept.invocable#concept:invocable "18.7.2 Concept invocable [concept.invocable]")template<class F, class... Args>concept invocable = *see below*; // [[concept.regularinvocable]](concept.regularinvocable "18.7.3 Concept regular_­invocable"), concept [regular_invocable](concept.regularinvocable#concept:regular_invocable "18.7.3 Concept regular_­invocable [concept.regularinvocable]")template<class F, class... Args>concept regular_invocable = *see below*; // [[concept.predicate]](concept.predicate "18.7.4 Concept predicate"), concept [predicate](concept.predicate#concept:predicate "18.7.4 Concept predicate [concept.predicate]")template<class F, class... Args>concept predicate = *see below*; // [[concept.relation]](concept.relation "18.7.5 Concept relation"), concept [relation](concept.relation#concept:relation "18.7.5 Concept relation [concept.relation]")template<class R, class T, class U>concept relation = *see below*; // [[concept.equiv]](concept.equiv "18.7.6 Concept equivalence_­relation"), concept [equivalence_relation](concept.equiv#concept:equivalence_relation "18.7.6 Concept equivalence_­relation [concept.equiv]")template<class R, class T, class U>concept equivalence_relation = *see below*; // [[concept.strictweakorder]](concept.strictweakorder "18.7.7 Concept strict_­weak_­order"), concept [strict_weak_order](concept.strictweakorder#concept:strict_weak_order "18.7.7 Concept strict_­weak_­order [concept.strictweakorder]")template<class R, class T, class U>concept strict_weak_order = *see below*;}
