Namespaces
Variants

std:: copyable_function

From cppreference.net
Utilities library
Function objects
Function wrappers
(C++11)
copyable_function
(C++26)
(C++11)
Function invocation
(C++17) (C++23)
Identity function object
(C++20)
Old binders and adaptors
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
( until C++17* ) ( until C++17* )
( until C++17* ) ( until C++17* )

( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
Definido en el encabezado <functional>
template < class ... >
class copyable_function ; // no definida
(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 contenedor de funciones polimórfico de propósito general. Los objetos std::copyable_function pueden almacenar e invocar cualquier CopyConstructible Callable objetivo — funciones, expresiones lambda , expresiones de enlace , u otros objetos función, así como punteros a funciones miembro y punteros a objetos miembro.

El objeto invocable almacenado se denomina target de std::copyable_function . Si un std::copyable_function no contiene ningún target, se denomina empty . A diferencia de std::function , invocar un empty std::copyable_function resulta en comportamiento indefinido.

std::copyable_function admite todas las combinaciones posibles de calificadores cv (excluyendo volatile ), calificadores de referencia , y especificadores noexcept proporcionados en su parámetro de plantilla. Estos calificadores y especificadores (si los hay) se añaden a su operator() .

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

Contenidos

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)