C++ named requirements: CustomizationPointObject (since C++20)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objetos de punto de personalización
son objetos de función sin estado
function objects
de un tipo de clase
literal
semiregular
.
Todos los objetos de punto de personalización del mismo tipo de clase son iguales. Los efectos de invocar diferentes instancias de ese tipo sobre los mismos argumentos son equivalentes, ya sea que la expresión que denota la instancia sea un lvalue o rvalue, calificado const o no. Sin embargo, no se requiere que una instancia calificada volatile sea invocable. Por lo tanto, los objetos de punto de personalización pueden copiarse libremente y las copias pueden usarse indistintamente.
Sea
Fn
el tipo de un objeto de punto de personalización, y
Args...
un conjunto de tipos, si
std::
declval
<
Args
>
(
)
...
cumple con los requisitos para argumentos de
Fn
,
Fn
modela
- std:: invocable < Fn, Args... > ,
- std:: invocable < const Fn, Args... > ,
- std:: invocable < Fn & , Args... > , y
-
std::
invocable
<
const
Fn
&
, Args...
>
.
De lo contrario, ningún operador de llamada a función de
Fn
participa en la resolución de sobrecarga.