Namespaces
Variants

std::copyable_function

De es.cppreference.net
 
 
Biblioteca de utilidades
Soporte del lenguaje
Soporte de tipos (tipos básicos, RTTI)
Macros de prueba de características de la biblioteca (C++20)
Utilidades de programa
Funciones variádicas
Soporte de corrutinas (C++20)
Soporte de contratos (C++26)
Comparación de tres vías
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilidades generales
Operadores relacionales (obsoleto en C++20)
 
Objetos función
Invocación de función
(C++17)(C++23)
Objeto función identidad
(C++20)
Envoltorios de operador transparente
(C++14)
(C++14)
(C++14)
(C++14)  
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)

Enlazadores y adaptadores antiguos
(hasta C++17*)
(hasta C++17*)
(hasta C++17*)
(hasta C++17*)  
(hasta C++17*)
(hasta C++17*)(hasta C++17*)(hasta C++17*)(hasta C++17*)
(hasta C++20*)
(hasta C++20*)
(hasta C++17*)(hasta C++17*)
(hasta C++17*)(hasta C++17*)

(hasta C++17*)
(hasta C++17*)(hasta C++17*)(hasta C++17*)(hasta C++17*)
(hasta C++20*)
(hasta C++20*)
 
 
Definido en el encabezado <functional>
template< class... >
class copyable_function; // not defined
(1) (desde C++26)
template< class R, class... Args >
class copyable_function<R(Args...)>;
template< class R, class... Args >
class copyable_function<R(Args...) noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) &>;
template< class R, class... Args >
class copyable_function<R(Args...) & noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) &&>;
template< class R, class... Args >
class copyable_function<R(Args...) && noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) const>;
template< class R, class... Args >
class copyable_function<R(Args...) const noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) const &>;
template< class R, class... Args >
class copyable_function<R(Args...) const & noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) const &&>;
template< class R, class... Args >
class copyable_function<R(Args...) const && noexcept>;
(2) (desde C++26)

La plantilla de clase std::copyable_function es un envoltorio de función polimórfico de propósito general. Los objetos std::copyable_function pueden almacenar e invocar cualquier CopyConstructible Callable target — funciones, expresiones lambda, expresiones bind, u otros objetos función, así como punteros a funciones miembro y punteros a objetos miembro.

El objeto invocable almacenado se llama target de std::copyable_function. Si un std::copyable_function no contiene ningún objetivo, se dice que está vacío. A diferencia de std::function, invocar un vacío std::copyable_function resulta en comportamiento indefinido.

std::copyable_functions soporta cada combinación posible de cv-calificadores (sin incluir volatile), ref-calificadores, y noexcept-especificadores proporcionada en su parámetro de plantilla. Estos calificadores y especificador (si los hay) se añaden a su operator().

std::copyable_function satisface los requisitos de CopyConstructible y CopyAssignable.

Tipos de miembros

Tipo Definición
result_type R

Funciones miembro

construye un nuevo objeto std::copyable_function
(función miembro pública)
destruye un objeto std::copyable_function
(función miembro pública)
reemplaza o destruye el objetivo
(función miembro pública)
intercambia los objetivos de dos objetos std::copyable_function
(función miembro pública)
verifica si el std::copyable_function tiene un objetivo
(función miembro pública)
invoca el objetivo
(función miembro pública)

Funciones no miembro

sobrecarga el algoritmo std::swap
(función)
(C++26)
compara un std::copyable_function con nullptr
(función)

Notas

Las implementaciones pueden almacenar un objeto invocable de tamaño reducido dentro del std::copyable_function objeto. Esta optimización de objeto pequeño está efectivamente requerida para punteros a función y std::reference_wrapper especializaciones, y solo puede aplicarse a tipos T para los cuales std:: is_nothrow_move_constructible_v < T > es true .

Macro de prueba de características Valor Std Característica
__cpp_lib_copyable_function 202306L (C++26) std::copyable_function

Ejemplo

Véase también

(C++11)
contenedor copiable de cualquier objeto invocable copiable
(plantilla de clase)
contenedor no copiable de cualquier objeto invocable que soporta calificadores en una signatura de llamada dada
(plantilla de clase)
contenedor no propietario de cualquier objeto invocable
(plantilla de clase)