std:: is_invocable, std:: is_invocable_r, std:: is_nothrow_invocable, std:: is_nothrow_invocable_r
|
Défini dans l'en-tête
<type_traits>
|
||
|
template
<
class
Fn,
class
...
ArgTypes
>
struct is_invocable ; |
(1) | (depuis C++17) |
|
template
<
class
R,
class
Fn,
class
...
ArgTypes
>
struct is_invocable_r ; |
(2) | (depuis C++17) |
|
template
<
class
Fn,
class
...
ArgTypes
>
struct is_nothrow_invocable ; |
(3) | (depuis C++17) |
|
template
<
class
R,
class
Fn,
class
...
ArgTypes
>
struct is_nothrow_invocable_r ; |
(4) | (depuis C++17) |
Si
Fn, R
ou tout type dans le pack de paramètres
ArgTypes
n'est pas un type complet, (éventuellement qualifié cv)
void
, ou un tableau de limite inconnue, le comportement est indéfini.
Si une instanciation d'un template ci-dessus dépend, directement ou indirectement, d'un type incomplet, et que cette instanciation pourrait produire un résultat différent si ce type était hypothétiquement complété, le comportement est indéfini.
Si le programme ajoute des spécialisations pour l'un des modèles décrits sur cette page, le comportement est indéfini.
Table des matières |
Modèles de variables d'assistance
|
Défini dans l'en-tête
<type_traits>
|
||
|
template
<
class
Fn,
class
...
ArgTypes
>
inline
constexpr
bool
is_invocable_v
=
|
(1) | (depuis C++17) |
|
template
<
class
R,
class
Fn,
class
...
ArgTypes
>
inline
constexpr
bool
is_invocable_r_v
=
|
(2) | (depuis C++17) |
|
template
<
class
Fn,
class
...
ArgTypes
>
inline
constexpr
bool
is_nothrow_invocable_v
=
|
(3) | (depuis C++17) |
|
template
<
class
R,
class
Fn,
class
...
ArgTypes
>
inline
constexpr
bool
is_nothrow_invocable_r_v
=
|
(4) | (depuis C++17) |
Hérité de std:: integral_constant
Constantes membres
|
value
[static]
|
true
si (pour la surcharge
(1)
)
INVOKE
(
std::
declval
<
Fn
>
(
)
,
std::
declval
<
ArgTypes
>
(
)
...
)
est bien formé lorsqu'il est traité comme un opérande non évalué,
false
sinon
(constante membre publique statique) |
Fonctions membres
|
operator bool
|
convertit l'objet en
bool
, retourne
value
(fonction membre publique) |
|
operator()
(C++14)
|
retourne
value
(fonction membre publique) |
Types membres
| Type | Définition |
value_type
|
bool |
type
|
std:: integral_constant < bool , value > |
Notes
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_is_invocable
|
201703L
|
(C++17) |
std::is_invocable
,
std::invoke_result
|
Exemples
#include <type_traits> auto func2(char) -> int (*)() { return nullptr; } int main() { static_assert(std::is_invocable_v<int()>); static_assert(not std::is_invocable_v<int(), int>); static_assert(std::is_invocable_r_v<int, int()>); static_assert(not std::is_invocable_r_v<int*, int()>); static_assert(std::is_invocable_r_v<void, void(int), int>); static_assert(not std::is_invocable_r_v<void, void(int), void>); static_assert(std::is_invocable_r_v<int(*)(), decltype(func2), char>); static_assert(not std::is_invocable_r_v<int(*)(), decltype(func2), void>); }
Voir aussi
|
(C++17)
(C++23)
|
invoque tout
Callable
objet avec les arguments donnés
et possibilité de spécifier le type de retour
(depuis C++23)
(modèle de fonction) |
|
(C++11)
(supprimé en C++20)
(C++17)
|
déduit le type de résultat de l'invocation d'un objet appelable avec un ensemble d'arguments
(modèle de classe) |
|
(C++11)
|
obtient une référence à un objet du type d'argument du modèle pour utilisation dans un contexte non évalué
(modèle de fonction) |
|
(C++20)
|
spécifie qu'un type appelable peut être invoqué avec un ensemble donné de types d'arguments
(concept) |