C++ named requirements: CustomizationPointObject (since C++20)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Customization Point Objects
sind zustandslose
Function Objects
eines
literal
semiregular
Klassentyps.
Alle Anpassungspunktobjekte desselben Klassentyps sind gleich. Die Effekte des Aufrufs verschiedener Instanzen dieses Typs mit denselben Argumenten sind äquivalent, unabhängig davon, ob der Ausdruck, der die Instanz bezeichnet, ein Lvalue oder Rvalue ist, const-qualifiziert oder nicht. Allerdings ist eine volatile-qualifizierte Instanz nicht aufrufbar. Daher können Anpassungspunktobjekte frei kopiert werden, und die Kopien können austauschbar verwendet werden.
Sei
Fn
der Typ eines Customization Point Objects und
Args...
eine Menge von Typen. Wenn
std::
declval
<
Args
>
(
)
...
die Anforderungen an Argumente für
Fn
erfüllt,
modelliert
Fn
- std:: invocable < Fn, Args... > ,
- std:: invocable < const Fn, Args... > ,
- std:: invocable < Fn & , Args... > , und
-
std::
invocable
<
const
Fn
&
, Args...
>
.
Andernfalls nimmt kein Funktionsaufrufoperator von
Fn
an der Überladungsauflösung teil.