C++ named requirements: CustomizationPointObject (since C++20)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objets de point de personnalisation
sont des
objets fonction
sans état de type
littéral
semiregular
.
Tous les objets de point de personnalisation du même type de classe sont égaux. Les effets de l'invocation de différentes instances de ce type sur les mêmes arguments sont équivalents, que l'expression désignant l'instance soit une lvalue ou une rvalue, qualifiée const ou non. Cependant, une instance qualifiée volatile n'est pas requise d'être invocable. Ainsi, les objets de point de personnalisation peuvent être copiés librement et les copies peuvent être utilisées de manière interchangeable.
Soit
Fn
le type d'un objet de point de personnalisation, et
Args...
un ensemble de types, si
std::
declval
<
Args
>
(
)
...
satisfait aux exigences pour les arguments de
Fn
,
Fn
modélise
- std:: invocable < Fn, Args... > ,
- std:: invocable < const Fn, Args... > ,
- std:: invocable < Fn & , Args... > , et
-
std::
invocable
<
const
Fn
&
, Args...
>
.
Sinon, aucun opérateur d'appel de fonction de
Fn
ne participe à la résolution de surcharge.