std::function<R(Args...)>::operator()
Материал из cppreference.com
< cpp | utility | functional | function
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) (шаблон функции) |