Namespaces
Variants

std::experimental:: invocation_type, std::experimental:: raw_invocation_type

From cppreference.net
Definido en el encabezado <experimental/type_traits>
template < class >

struct raw_invocation_type ; //undefined

template < class Fn, class ... ArgTypes >

struct raw_invocation_type < Fn ( ArgTypes... ) > ;
(1) (library fundamentals TS)
template < class >

struct invocation_type ; //undefined

template < class Fn, class ... ArgTypes >

struct invocation_type < Fn ( ArgTypes... ) > ;
(2) (library fundamentals TS)

Calcula los parámetros de invocación cuando Fn es llamado con los argumentos ArgTypes... , como en INVOKE ( std:: declval < Fn > ( ) , std:: declval < ArgTypes > ( ) ... ) , donde INVOKE es la operación definida en Callable .

Los parámetros de invocación de la expresión INVOKE ( f, t1, t2, ..., tN ) se definen de la siguiente manera, donde T1 es el tipo (posiblemente calificado cv) de t1 y U1 es T1& si t1 es un lvalue y T1&& en caso contrario:

  • Si f es un puntero a una función miembro de una clase T , entonces los parámetros de invocación son U1 seguido de los parámetros de f coincidentes con t2, ..., tN .
  • Si N == 1 y f es un puntero a dato miembro de una clase T , entonces el parámetro de invocación es U1 .
  • Si f es un objeto de tipo clase, los parámetros de invocación son los parámetros coincidentes con t1, ..., tN de la función más viable para los argumentos t1, ..., tN entre los operadores de llamada a función y las funciones de llamada sustitutas de f .
  • En todos los demás casos, los parámetros de invocación son los parámetros de f coincidentes con t1, ..., tN .

Si un argumento tI coincide con una elipsis en la lista de parámetros de la función, el parámetro de invocación correspondiente es el resultado de aplicar las promociones de argumentos predeterminadas a tI .

Fn y todos los tipos en ArgTypes pueden ser cualquier tipo completo, array de límite desconocido, o (posiblemente calificado con cv) void .

Contenidos

Tipos de miembros

Tipo de miembro Definición
raw_invocation_type < Fn ( ArgTypes... ) > :: type R ( T1, T2, ... ) , donde:

Solo definido si Fn puede ser llamado con los argumentos ArgTypes... en contexto no evaluado.

invocation_type < Fn ( ArgTypes... ) > :: type R ( U1, U2, ... ) , donde

Solo definido si Fn puede ser llamado con los argumentos ArgTypes... en contexto no evaluado.

Tipos auxiliares

template < class T >
using raw_invocation_type_t = typename raw_invocation_type < T > :: type ;
(especificación técnica de biblioteca fundamentals)
template < class T >
using invocation_type_t = typename invocation_type < T > :: type ;
(especificación técnica de biblioteca fundamentals)

Ejemplo

Véase también

Documentación de C++ para Reflection TS