[expos.only.entity] # 16 Library introduction [[library]](./#library) ## 16.3 Method of description [[description]](description#expos.only.entity) ### 16.3.3 Other conventions [[conventions]](conventions#expos.only.entity) #### 16.3.3.2 Exposition-only entities, etc. [expos.only.entity] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L526) Several entities and [*typedef-name*](dcl.typedef#nt:typedef-name "9.2.4 The typedef specifier [dcl.typedef]")*s* defined in [[support]](support "17 Language support library") through [[exec]](exec "33 Execution control library") and [[depr]](depr "Annex D (normative) Compatibility features") are only defined for the purpose of exposition[.](#1.sentence-1) The declaration of such an entity or [*typedef-name*](dcl.typedef#nt:typedef-name "9.2.4 The typedef specifier [dcl.typedef]") is followed by a comment ending in *exposition only*[.](#1.sentence-2) [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L533) The following are defined for exposition only to aid in the specification of the library: [🔗](#lib:decay-copy) namespace std {templaterequires [convertible_to](concept.convertible#concept:convertible_to "18.4.4 Concept convertible_­to [concept.convertible]")>constexpr decay_t *decay-copy*(T&& v) // *exposition only*noexcept(is_nothrow_convertible_v>){ return std::forward(v); }constexpr auto *synth-three-way* = // *exposition only*[](const T& t, const U& u)requires requires {{ t < u } -> [*boolean-testable*](concept.booleantestable#concept:boolean-testable "18.5.2 Boolean testability [concept.booleantestable]"); { u < t } -> [*boolean-testable*](concept.booleantestable#concept:boolean-testable "18.5.2 Boolean testability [concept.booleantestable]"); }{if constexpr ([three_way_comparable_with](cmp.concept#concept:three_way_comparable_with "17.12.4 Concept three_­way_­comparable [cmp.concept]")) {return t <=> u; } else {if (t < u) return weak_ordering::less; if (u < t) return weak_ordering::greater; return weak_ordering::equivalent; }}; templateusing *synth-three-way-result* = // *exposition only*decltype(*synth-three-way*(declval(), declval()));} [3](#3) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L567) An object dst is said to be [*decay-copied from*](#def:decay-copied_from "16.3.3.2 Exposition-only entities, etc. [expos.only.entity]") a subexpression src if the type of dst isdecay_t