std:: invocable, std:: regular_invocable
|
Definido en el encabezado
<concepts>
|
||
|
template
<
class
F,
class
...
Args
>
concept invocable
=
|
(desde C++20) | |
|
template
<
class
F,
class
...
Args
>
concept regular_invocable = std :: invocable < F, Args... > ; |
(desde C++20) | |
El concepto
invocable
especifica que un tipo invocable
F
puede ser llamado con un conjunto de argumentos
Args...
utilizando la plantilla de función
std::invoke
.
El concepto
regular_invocable
añade al concepto
invocable
al requerir que la expresión
invoke
sea
que preserva la igualdad
y no modifique ni el objeto función ni los argumentos.
Contenidos |
Preservación de la igualdad
Las expresiones declaradas en las requires expressions de los conceptos de la biblioteca estándar deben ser equality-preserving (excepto cuando se indique lo contrario).
Notas
La distinción entre
invocable
y
regular_invocable
es puramente semántica.
Un generador de números aleatorios puede satisfacer
invocable
pero no puede satisfacer
regular_invocable
(
excluyendo los cómicos
).
Referencias
- Estándar C++23 (ISO/IEC 14882:2024):
-
-
18.7.2 Concepto
invocable[concept.invocable]
-
18.7.2 Concepto
-
-
18.7.3 Concepto
regular_invocable[concept.regularinvocable]
-
18.7.3 Concepto
- Estándar C++20 (ISO/IEC 14882:2020):
-
-
18.7.2 Concepto
invocable[concept.invocable]
-
18.7.2 Concepto
-
-
18.7.3 Concepto
regular_invocable[concept.regularinvocable]
-
18.7.3 Concepto
Véase también
|
verifica si un tipo puede ser invocado (como si fuera mediante
std::invoke
) con los tipos de argumentos dados
(plantilla de clase) |
Enlaces externos
Un
ejemplo humorístico
de un generador de números aleatorios que satisface tanto
invocable
como
regular_invocable
.
|