std:: invocable, std:: regular_invocable
|
Défini dans l'en-tête
<concepts>
|
||
|
template
<
class
F,
class
...
Args
>
concept invocable
=
|
(depuis C++20) | |
|
template
<
class
F,
class
...
Args
>
concept regular_invocable = std :: invocable < F, Args... > ; |
(depuis C++20) | |
Le concept
invocable
spécifie qu'un type appelable
F
peut être appelé avec un ensemble d'arguments
Args...
en utilisant le modèle de fonction
std::invoke
.
Le concept
regular_invocable
complète le concept
invocable
en exigeant que l'expression
invoke
soit
préservatrice d'égalité
et ne modifie ni l'objet fonction ni les arguments.
Table des matières |
Préservation de l'égalité
Les expressions déclarées dans les requires expressions des concepts de la bibliothèque standard doivent être equality-preserving (sauf indication contraire).
Notes
La distinction entre
invocable
et
regular_invocable
est purement sémantique.
Un générateur de nombres aléatoires peut satisfaire
invocable
mais ne peut pas satisfaire
regular_invocable
(
les générateurs comiques
exclus).
Références
- Norme C++23 (ISO/IEC 14882:2024) :
-
-
18.7.2 Concept
invocable[concept.invocable]
-
18.7.2 Concept
-
-
18.7.3 Concept
regular_invocable[concept.regularinvocable]
-
18.7.3 Concept
- Norme C++20 (ISO/CEI 14882:2020) :
-
-
18.7.2 Concept
invocable[concept.invocable]
-
18.7.2 Concept
-
-
18.7.3 Concept
regular_invocable[concept.regularinvocable]
-
18.7.3 Concept
Voir aussi
|
vérifie si un type peut être invoqué (comme par
std::invoke
) avec les types d'arguments donnés
(modèle de classe) |
Liens externes
Un
exemple humoristique
d'un générateur de nombres aléatoires qui satisfait à la fois
invocable
et
regular_invocable
.
|