[concepts.object] # 18 Concepts library [[concepts]](./#concepts) ## 18.6 Object concepts [concepts.object] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/concepts.tex#L1172) This subclause describes concepts that specify the basis of the value-oriented programming style on which the library is based[.](#1.sentence-1) [🔗](#itemdecl:1) `template concept [movable](#concept:movable "18.6 Object concepts [concepts.object]") = is_object_v && [move_constructible](concept.moveconstructible#concept:move_constructible "18.4.13 Concept move_­constructible [concept.moveconstructible]") && [assignable_from](concept.assignable#concept:assignable_from "18.4.8 Concept assignable_­from [concept.assignable]") && [swappable](concept.swappable#concept:swappable "18.4.9 Concept swappable [concept.swappable]"); template concept [copyable](#concept:copyable "18.6 Object concepts [concepts.object]") = [copy_constructible](concept.copyconstructible#concept:copy_constructible "18.4.14 Concept copy_­constructible [concept.copyconstructible]") && [movable](#concept:movable "18.6 Object concepts [concepts.object]") && [assignable_from](concept.assignable#concept:assignable_from "18.4.8 Concept assignable_­from [concept.assignable]") && [assignable_from](concept.assignable#concept:assignable_from "18.4.8 Concept assignable_­from [concept.assignable]") && [assignable_from](concept.assignable#concept:assignable_from "18.4.8 Concept assignable_­from [concept.assignable]"); template concept [semiregular](#concept:semiregular "18.6 Object concepts [concepts.object]") = [copyable](#concept:copyable "18.6 Object concepts [concepts.object]") && [default_initializable](concept.default.init#concept:default_initializable "18.4.12 Concept default_­initializable [concept.default.init]"); template concept [regular](#concept:regular "18.6 Object concepts [concepts.object]") = [semiregular](#concept:semiregular "18.6 Object concepts [concepts.object]") && [equality_comparable](concept.equalitycomparable#concept:equality_comparable "18.5.4 Concept equality_­comparable [concept.equalitycomparable]"); ` [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/concepts.tex#L1190) [*Note [1](#note-1)*: The [semiregular](#concept:semiregular "18.6 Object concepts [concepts.object]") concept is modeled by types that behave similarly to fundamental types like int, except that they need not be comparable with ==[.](#2.sentence-1) — *end note*] [3](#3) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/concepts.tex#L1197) [*Note [2](#note-2)*: The [regular](#concept:regular "18.6 Object concepts [concepts.object]") concept is modeled by types that behave similarly to fundamental types like int and that are comparable with==[.](#3.sentence-1) — *end note*]