Espacios de nombres
Variantes
Acciones

std::move_only_function

De cppreference.com
< cpp‎ | utility‎ | functional
 
 
Biblioteca de servicios
 
Objetos función
Envoltorios de funciones
(C++11)
move_only_function
(C++23)
(C++11)
Aplicación parcial de funciones
(C++20)
(C++11)
Invocación de funciones
(C++17)(C++23)
Objeto función identidad
(C++20)
Envoltorios de referencias
(C++11)(C++11)
Envoltorios de operador transparentes
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
Negadores
(C++17)
Buscadores
Vinculadores 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++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 archivo de encabezado <functional>
template<class... >
class move_only_function;// not defined
(desde C++23)
template<class R, class... Args>

class move_only_function<R(Args...)>;
template<class R, class... Args>
class move_only_function<R(Args...)noexcept>;
template<class R, class... Args>
class move_only_function<R(Args...)&>;
template<class R, class... Args>
class move_only_function<R(Args...)&noexcept>;
template<class R, class... Args>
class move_only_function<R(Args...)&&>;
template<class R, class... Args>
class move_only_function<R(Args...)&&noexcept>;
template<class R, class... Args>
class move_only_function<R(Args...)const>;
template<class R, class... Args>
class move_only_function<R(Args...)constnoexcept>;
template<class R, class... Args>
class move_only_function<R(Args...)const&>;
template<class R, class... Args>
class move_only_function<R(Args...)const&noexcept>;
template<class R, class... Args>
class move_only_function<R(Args...)const&&>;
template<class R, class... Args>

class move_only_function<R(Args...)const&&noexcept>;
(desde C++23)

La plantilla de clase std::move_only_function es un contenedor de funciones polimórficas de propósito general. Los objetos std::move_only_function pueden almacenar e invocar cualquier destinoCallable construible (no es necesario que sea construible por movimiento)–funciones, expresiones lambda, expresiones de vinculación, u otros objetos función, así como punteros a funciones miembro y punteros a objetos miembro.

El objeto invocable almacenado se llama el destino de std::move_only_function. Si un objeto std::move_only_function no contiene objetivo, se llama vacío. A diferencia de std::function, invocar un objeto std::move_only_functionvacío da como resultado un comportamiento no definido.

Los objetos std::move_only_function admiten toda combinación posible de calificadores const y volatile, calificadores de referencia, y especificadores noexcept que no incluyen volatile suministrado en su parámetro de plantilla. Estos calificadores y especificador (si los hay) se agregan a su operador operator().

std::move_only_function satisface los requerimientos de MoveConstructible y MoveAssignable, pero no satisface los de CopyConstructible o CopyAssignable.

Contenido

[editar]Tipos miembro

Tipo Definición
result_typeR

[editar]Funciones miembro

Construye un nuevo objeto de tipo std::move_only_function.
(función miembro pública)[editar]
Destruye un objeto std::move_only_function.
(función miembro pública)[editar]
(C++23)
Reemplaza o destruye el objetivo.
(función miembro pública)[editar]
(C++23)
Intercambia el objetivo de dos objetos std::move_only_function.
(función miembro pública)[editar]
Verifica si la instancia de std::move_only_function tiene un objetivo.
(función miembro pública)[editar]
(C++23)
Invoca al objetivo.
(función miembro pública)[editar]

[editar]Funciones no miembro

Especializa el algoritmo std::swap.
(función)[editar]
(C++23)
Compara una instancia de std::move_only_function con nullptr.
(función)[editar]

[editar]Notas

Se recomienda a las implementaciones almacenar un objeto invocable de tamaño pequeño dentro del objeto std::move_only_function. Dicha optimización de objetos pequeños se requiere efectivamente para punteros de función y especializaciones std::reference_wrapper, y solo se puede aplicar a tipos T para los cuales std::is_nothrow_move_construcible_v<T> es true.

Si un objeto std::move_only_function que devuelve una referencia se inicializa desde una función o un objeto función que devuelve un pr-valor (incluida una expresión lambda sin un tipo de retorno al final), el programa está mal formado porque vincular la referencia a un temporal devuelta está prohibido. Véase también la sección de notas de std::function .


Macro de Prueba de característicaValorEstándar
__cpp_lib_move_only_function202110L(C++23)

[editar]Ejemplo

[editar]Véase también

(C++11)
Envuelve un objeto que puede ser llamado a cualquier tipo con la signatura de llamada a función especificada.
(plantilla de clase)[editar]
close