std::move_only_function:: operator()
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Old binders and adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
R operator
(
)
(
Args...
args
)
/*cv*/
/*ref*/
noexcept
(
/*noex*/
)
;
|
(desde C++23) | |
Invoca el objetivo invocable almacenado con los parámetros
args
. Las partes
/*cv*/
,
/*ref*/
, y
/*noex*/
de
operator
(
)
son idénticas a las del parámetro de plantilla de
std::move_only_function
.
Equivalente a
return
std::
invoke_r
<
R
>
(
/*cv-ref-cast*/
(
f
)
,
std::
forward
<
Args
>
(
args
)
...
)
;
, donde
f
es un lvalue sin calificadores cv que denota el objeto objetivo de
*
this
, y
/*cv-ref-cast*/
(
f
)
es equivalente a:
- f si cv ref está vacío o es & , o
- std:: as_const ( f ) si cv ref es const o const & , o
- std :: move ( f ) si cv ref es && , o
- std :: move ( std:: as_const ( f ) ) si cv ref es const && .
El comportamiento es indefinido si * this está vacío.
Contenidos |
Parámetros
| args | - | parámetros para pasar al destino invocable almacenado |
Valor de retorno
std:: invoke_r < R > ( /*conversión calificador cv-ref*/ ( f ) , std:: forward < Args > ( args ) ... ) .
Excepciones
Propaga la excepción lanzada por la llamada de función subyacente.
Ejemplo
El siguiente ejemplo muestra cómo std::move_only_function puede pasarse a otras funciones por valor. También muestra cómo std::move_only_function puede almacenar lambdas.
#include <iostream> #include <functional> void call(std::move_only_function<int() const> f) // can be passed by value { std::cout << f() << '\n'; } int normal_function() { return 42; } int main() { int n = 1; auto lambda = [&n](){ return n; }; std::move_only_function<int() const> f = lambda; call(std::move(f)); n = 2; call(lambda); f = normal_function; call(std::move(f)); }
Salida:
1 2 42
Véase también
|
invoca el objetivo
(función miembro pública de
std::function<R(Args...)>
)
|
|
|
llama a la función almacenada
(función miembro pública de
std::reference_wrapper<T>
)
|
|
|
(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) |