Espacios de nombres
Variantes
Acciones

std::is_invocable, std::is_invocable_r, std::is_nothrow_invocable, std::is_nothrow_invocable_r

De cppreference.com
< cpp‎ | types
 
 
Biblioteca de servicios
 
Apoyo de tipos
Propiedades de tipos
(C++11)
(C++11)
(C++14)
(C++11)
(C++11)(hasta C++20)
(C++11)(en desuso en C++20)
(C++11)
Constantes de rasgos de tipos
Metafunciones
(C++17)
Contexto de evaluación constante
Operaciones soportadas
Relaciones y consultas de propiedades
(C++11)
(C++11)
is_invocableis_invocable_ris_nothrow_invocableis_nothrow_invocable_r
(C++17)(C++17)(C++17)(C++17)
Modificaciones de tipos
Transformaciones de tipos
(C++11)
(C++11)
(C++17)
(C++11)(hasta C++20)(C++17)
 
Definido en el archivo de encabezado <type_traits>
template<class Fn, class... ArgTypes>
struct is_invocable;
(1) (desde C++17)
template<class R, class Fn, class... ArgTypes>
struct is_invocable_r;
(2) (desde C++17)
template<class Fn, class... ArgTypes>
struct is_nothrow_invocable;
(3) (desde C++17)
template<class R, class Fn, class... ArgTypes>
struct is_nothrow_invocable_r;
(4) (desde C++17)
1) Determina si Fn puede invocarse con los argumentos ArgTypes.... Formalmente, determina si INVOKE(declval<Fn>(), declval<ArgTypes>()...) está bien formado cuando se trata como un operando no evaluado, donde INVOKE es la operación definida en Callable.
2) Determina si Fn puede invocarse con los argumentos ArgTypes... para producir un resultado que es convertible a R. Formalmente, determina si INVOKE<R>(declval<Fn>(), declval<ArgTypes>()...) está bien formado cuando se trata como un operando no evaluado, donde INVOKE es la operación definida en Callable.
3) Determina si Fn puede invocarse con los argumentos ArgTypes... (lo mismo que (1)), y se sabe que tal llamada no lanzará ninguna excepción.
4) Determina si Fn puede invocarse con los argumentos ArgTypes... para producir un resultado que es convertible a R (lo mismo que (2)), y se sabe (incluyendo la conversión) que tal llamada no lanzará ninguna excepción.

Fn, R y todos los tipos en el paquete de parámetros ArgTypes deberá cada uno ser un tipo completo, (posiblemente calificado-cv) void, o un array de límite desconocido. De lo contrario, el comportamiento está indefinido.

Si la instanciación de una plantilla anterior depende, directa o indirectamente, de un tipo incompleto, y esa instanciación podría generar un resultado distinto si ese tipo hipotéticamente se completara, el comportamiento está indefinido.

El comportamiento de un programa que añade especializaciones para cualquiera de las plantillas definidas en esta página no está definido.

Contenido

[editar]Plantillas de variable auxiliares

Definido en el archivo de encabezado <type_traits>
template<class Fn, class... ArgTypes>
inlineconstexprbool is_invocable_v = std::is_invocable<Fn, ArgTypes...>::value;
(1) (desde C++17)
template<class R, class Fn, class... ArgTypes>
inlineconstexprbool is_invocable_r_v = std::is_invocable_r<R, Fn, ArgTypes...>::value;
(2) (desde C++17)
template<class Fn, class... ArgTypes>
inlineconstexprbool is_nothrow_invocable_v = std::is_nothrow_invocable<Fn, ArgTypes...>::value;
(3) (desde C++17)
template<class R, class Fn, class... ArgTypes>
inlineconstexprbool is_nothrow_invocable_r_v = std::is_nothrow_invocable_r<R, Fn, ArgTypes...>::value;
(4) (desde C++17)

Heredado de std::integral_constant

Constantes miembro

value
[estático]
true si INVOKE<R>(declval<Fn>(), declval<ArgTypes>()...) está bien formado cuando se trata como un operando no evaluado, de lo contrario false.
(constante miembro pública estática)

Funciones miembro

operator bool
Convierte el objeto a bool, devuelve value.
(función miembro pública)
operator()
(C++14)
Devuelve value.
(función miembro pública)

Tipos miembro

Tipo Definición
value_typebool
typestd::integral_constant<bool, value>

[editar]Ejemplos

#include <type_traits>   auto func2(char)->int(*)(){return nullptr;}   int main(){ static_assert( std::is_invocable<int()>::value); static_assert( std::is_invocable_r<int, int()>::value); static_assert( std::is_invocable_r<void, void(int), int>::value); static_assert( std::is_invocable_r<int(*)(), decltype(func2), char>::value);}


[editar]Véase también

(C++17)(C++23)
Invoca cualquier objeto Callable con los argumentos dados y la posibilidad de especificar el tipo de retorno.(desde C++23)
(plantilla de función)[editar]
(C++11)
Deduce el tipo de retorno de una expresión de llamada a la función.
(plantilla de clase)[editar]
(C++11)
Obtiene el tipo de expresión de un contexto no evaluado.
(plantilla de función)[editar]
close