std::copyable_function
| 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
|
(C++26)
|
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
|
Esta sección está incompleta
Razón: sin ejemplo |
Véase también
|
(C++11)
|
contenedor copiable de cualquier objeto invocable copiable
(plantilla de clase) |
|
(C++23)
|
contenedor no copiable de cualquier objeto invocable que soporta calificadores en una signatura de llamada dada
(plantilla de clase) |
|
(C++26)
|
contenedor no propietario de cualquier objeto invocable
(plantilla de clase) |