std::function<R(Args...)>::operator()
R operator()( Args... args ) const; |
(since C++11) |
Вызывает сохранённую вызываемую функцию-цель с параметрами args.
Эффективно выполняет INVOKE<R>(f, std::forward<Args>(args)...), где f — целевой объект *this.
Параметры
| args | - | параметры для передачи сохранённой вызываемой функции-цели |
Значение результата
None, если R — void. В противном случае — значение результата вызова сохранённого вызываемого объекта.
Исключения
Выбрасывает std::bad_function_call, если *this не хранит вызываемую функцию-цель, т.е. !*this == true.
Пример
В следующем примере показано, как std::function может быть передана другим функциям по значению. Также показано, как std::function может хранить лямбда-выражения.
#include <functional>
#include <iostream>
void call(std::function<int()> f) // can be passed by value
{
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)
|
вызывает целевой (публичный член-функции std::move_only_function) |
| вызывает сохранённую функцию (публичный член-функции std::reference_wrapper<T>) |
|
|
(C++11)
|
исключение, выбрасываемое при вызове пустого std::function (класс) |
|
(C++17)(C++23)
|
вызывает любой объект Callable с заданными аргументами и возможностью указать тип возвращаемого значения(с C++23) (шаблон функции) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/functional/function/operator()