std::function<R(Args...)>:: operator()
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Old binders and adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
|
(until C++17)
|
||||
|
function::operator()
|
||||
| Non-member functions | ||||
|
(until C++20)
|
||||
| Helper classes | ||||
|
(until C++17)
|
||||
| Deduction guides (C++17) |
|
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) // can be passed by value { std::cout << f() << '\n'; } int normal_function() { return 42; } int main() { int n = 1; std::function<int()> f; try { call(f); } catch (const std::bad_function_call& ex) { std::cout << ex.what() << '\n'; } f = [&n](){ return n; }; call(f); n = 2; call(f); f = normal_function; call(f); std::function<void(std::string, int)> g; g = [](std::string str, int i) { std::cout << str << ' ' << i << '\n'; }; g("Hi", 052); }
Возможный вывод:
bad_function_call 1 2 42 Hi 42
Смотрите также
|
вызывает целевой объект
(публичная функция-член
std::move_only_function
)
|
|
|
вызывает сохранённую функцию
(публичная функция-член
std::reference_wrapper<T>
)
|
|
|
(C++11)
|
исключение, выбрасываемое при вызове пустого
std::function
(класс) |
|
(C++17)
(C++23)
|
вызывает любой
Callable
объект с заданными аргументами
с возможностью указания возвращаемого типа
(since C++23)
(шаблон функции) |