std::function<R(Args...)>::operator()
Материал из cppreference.com
<tbody>
</tbody>
R operator()( Args... args ) const; |
(начиная с C++11) | |
Вызывает сохранённую цель вызываемой функции с параметрами args.
Эффективно вызывает INVOKE<R>(f, std::forward<Args>(args)...), где f это целевой объект *this.
Параметры
| args | — | параметры для передачи сохранённой цели вызываемой функции |
Возвращаемое значение
Нет, если R равно void. Иначе возвращаемое значение вызова сохранённого вызываемого объекта.
Исключения
Генерирует исключение std::bad_function_call, если *this не хранит цель вызываемой функции, т.е. !*this == true.
Пример
В следующем примере показано, как std::function можно передать другим функциям по значению. Кроме того, он показывает, как std::function может хранить лямбда-выражения.
Запустить этот код
#include <functional>
#include <iostream>
void call(std::function<int()> f) // можно передать по значению
{
std::cout << f() << '\n';
}
int normal_function()
{
return 42;
}
int main()
{
int n = 1;
std::function<int()> f = [&n](){ return n; };
call(f);
n = 2;
call(f);
f = normal_function;
call(f);
}
Вывод:
1
2
42
Смотрите также
(C++23) |
вызывает цель (public функция-элемент std::move_only_function)
|
| вызывает сохранённую функцию (public функция-элемент std::reference_wrapper)
| |
(C++11) |
исключение, возникающее при вызове пустой std::function (класс) |
(C++17)(C++23) |
вызывает любой Callable объект с данными аргументами и имеет возможность указать тип возврата (начиная с C++23) (шаблон функции) |