[concepts.object] (original) (raw)
18 Concepts library [concepts]
This subclause describes concepts that specify the basis of the value-oriented programming style on which the library is based.
template<class T> concept [movable](#concept:movable "18.6 Object concepts [concepts.object]") = [is_Âobject_Âv](meta.type.synop#lib:is%5Fobject%5Fv "20.15.3 Header <type_Âtraits> synopsis [meta.type.synop]")<T> && [move_Âconstructible](concept.moveconstructible#concept:move%5Fconstructible "18.4.13 Concept move_Âconstructible [concept.moveconstructible]")<T> && [assignable_Âfrom](concept.assignable#concept:assignable%5Ffrom "18.4.8 Concept assignable_Âfrom [concept.assignable]")<T&, T> && [swappable](concept.swappable#concept:swappable "18.4.9 Concept swappable [concept.swappable]")<T>;template<class T> concept [copyable](#concept:copyable "18.6 Object concepts [concepts.object]") = [copy_Âconstructible](concept.copyconstructible#concept:copy%5Fconstructible "18.4.14 Concept copy_Âconstructible [concept.copyconstructible]")<T> && [movable](#concept:movable "18.6 Object concepts [concepts.object]")<T> && [assignable_Âfrom](concept.assignable#concept:assignable%5Ffrom "18.4.8 Concept assignable_Âfrom [concept.assignable]")<T&, T&> && [assignable_Âfrom](concept.assignable#concept:assignable%5Ffrom "18.4.8 Concept assignable_Âfrom [concept.assignable]")<T&, const T&> && [assignable_Âfrom](concept.assignable#concept:assignable%5Ffrom "18.4.8 Concept assignable_Âfrom [concept.assignable]")<T&, const T>;template<class T> concept [semiregular](#concept:semiregular "18.6 Object concepts [concepts.object]") = [copyable](#concept:copyable "18.6 Object concepts [concepts.object]")<T> && [default_Âinitializable](concept.default.init#concept:default%5Finitializable "18.4.12 Concept default_Âinitializable [concept.default.init]")<T>;template<class T> concept [regular](#concept:regular "18.6 Object concepts [concepts.object]") = [semiregular](#concept:semiregular "18.6 Object concepts [concepts.object]")<T> && [equality_Âcomparable](concept.equalitycomparable#concept:equality%5Fcomparable "18.5.3 Concept equality_Âcomparable [concept.equalitycomparable]")<T>;
[Note 1:
The semiregular concept is modeled by types that behave similarly to built-in types like int, except that they might not be comparable with ==.
— _end note_]
[Note 2:
The regular concept is modeled by types that behave similarly to built-in types like int and that are comparable with==.
— _end note_]