Customization point object (seit C++20)
[bearbeiten] Erklärung
Der Name cpo bezeichnet ein Customization point object, welches ein konstantes Funktionsobjekt eines literalen semiregular Klassentyps ist. Zu Auslegungszwecken wird die cv-unqualifizierte Version seines Typs als __cpo_fn bezeichnet.
Alle Instanzen von __cpo_fn sind gleich. Die Effekte des Aufrufs verschiedener Instanzen des Typs __cpo_fn mit denselben Argumenten sind äquivalent, unabhängig davon, ob der Ausdruck, der die Instanz bezeichnet, ein lvalue oder rvalue ist und ob er mit const qualifiziert ist oder nicht (eine volatile-qualifizierte Instanz muss jedoch nicht aufrufbar sein). Daher kann cpo frei kopiert werden und seine Kopien können austauschbar verwendet werden.
Gegeben sei eine Menge von Typen Args.... Wenn std::declval<Args>()... die obigen Anforderungen an die Argumente von cpo erfüllt, modelliert __cpo_fn
- std::invocable<__cpo_fn, Args...>,
- std::invocable<const __cpo_fn, Args...>,
- std::invocable<__cpo_fn&, Args...>, und
- std::invocable<const __cpo_fn&, Args...>.
Andernfalls nimmt kein Funktionsaufrufoperator von __cpo_fn an der Überladungsauflösung teil.
[bearbeiten] Siehe auch
- RangeAdaptorObject (RAO)
- RangeAdaptorClosureObject (RACO)