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,则为 None
。否则为存储的可调用对象的调用返回值。
[编辑] 异常
如果 *this 未存储可调用函数目标,即 !*this == true,则抛出 std::bad_function_call。
[编辑] 示例
以下示例展示了如何按值将 std::function 传递给其他函数。此外,它还展示了如何使 std::function 存储 lambda 表达式。
运行此代码
#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 对象 并可能指定返回类型(自 C++23 起) (函数模板) |