Namespaces
Variants

C++ named requirements: Callable

From cppreference.net
C++ named requirements

Un tipo Callable es un tipo para el cual las operaciones INVOKE y INVOKE<R> (utilizadas por, por ejemplo, std::function , std::bind , y std::thread::thread ) son aplicables.

INVOKE se puede ejecutar explícitamente usando la función de biblioteca std::invoke .

(desde C++17)

INVOKE<R> se puede ejecutar explícitamente usando la función de biblioteca std::invoke_r .

(desde C++23)

Contenidos

Requisitos

El tipo T satisface Callable si

Dado

  • f , un objeto de tipo T ,
  • ArgTypes , lista adecuada de tipos de argumentos,
  • R , tipo de retorno adecuado.

Las siguientes expresiones deben ser válidas:

Expresión Requisitos
INVOKE<R> ( f, std:: declval < ArgTypes > ( ) ... ) La expresión está bien formada en contexto no evaluado.

Notas

Pointers to data members son Callable , aunque no se realicen llamadas a funciones.

Biblioteca estándar

Además, las siguientes facilidades de la biblioteca estándar aceptan cualquier Callable type (no solo FunctionObject ):

(C++11)
contenedor copiable de cualquier objeto invocable copiable
(plantilla de clase)
contenedor no copiable de cualquier objeto invocable que admita calificadores en una firma de llamada dada
(plantilla de clase)
contenedor copiable de cualquier objeto invocable copiable que admita calificadores en una firma de llamada dada
(plantilla de clase)
contenedor no propietario de cualquier objeto invocable
(plantilla de clase)
(C++11)
vincula uno o más argumentos a un objeto función
(plantilla de función)
(C++20) (C++23)
vincula un número variable de argumentos, en orden, a un objeto función
(plantilla de función)
CopyConstructible y CopyAssignable contenedor de referencia
(plantilla de clase)
(C++11) (removed in C++20) (C++17)
deduce el tipo de resultado de invocar un objeto invocable con un conjunto de argumentos
(plantilla de clase)
(C++11)
gestiona un hilo separado
(clase)
(C++20)
std::thread con soporte para auto-unirse y cancelación
(clase)
(C++11)
invoca una función solo una vez incluso si se llama desde múltiples hilos
(plantilla de función)
(C++11)
ejecuta una función de forma asíncrona (potencialmente en un nuevo hilo) y devuelve un std::future que contendrá el resultado
(plantilla de función)
empaqueta una función para almacenar su valor de retorno para recuperación asíncrona
(plantilla de clase)

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)
especifica que un tipo invocable puede ser llamado con un conjunto dado de tipos de argumentos
(concepto)
(C++17) (C++23)
invoca cualquier objeto Callable con los argumentos dados y posibilidad de especificar el tipo de retorno (desde C++23)
(plantilla de función)