This commit is contained in:
2025-10-25 03:02:53 +03:00
commit 043225d523
3416 changed files with 681196 additions and 0 deletions

View File

@@ -0,0 +1,34 @@
[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.4The typedef specifier[dcl.typedef]")*s* defined in [[support]](support "17Language support library") through [[exec]](exec "33Execution 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.4The 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 {template<class T>requires [convertible_to](concept.convertible#concept:convertible_to "18.4.4Concept convertible_­to[concept.convertible]")<T, decay_t<T>>constexpr decay_t<T> *decay-copy*(T&& v) // *exposition only*noexcept(is_nothrow_convertible_v<T, decay_t<T>>){ return std::forward<T>(v); }constexpr auto *synth-three-way* = // *exposition only*[]<class T, class U>(const T& t, const U& u)requires requires {{ t < u } -> [*boolean-testable*](concept.booleantestable#concept:boolean-testable "18.5.2Boolean testability[concept.booleantestable]"); { u < t } -> [*boolean-testable*](concept.booleantestable#concept:boolean-testable "18.5.2Boolean testability[concept.booleantestable]"); }{if constexpr ([three_way_comparable_with](cmp.concept#concept:three_way_comparable_with "17.12.4Concept three_­way_­comparable[cmp.concept]")<T, U>) {return t <=> u; } else {if (t < u) return weak_ordering::less; if (u < t) return weak_ordering::greater; return weak_ordering::equivalent; }}; template<class T, class U = T>using *synth-three-way-result* = // *exposition only*decltype(*synth-three-way*(declval<T&>(), declval<U&>()));}
[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.2Exposition-only entities, etc.[expos.only.entity]") a subexpression src if the type of dst isdecay_t<decltype((src))>