如何调用存储在指向"std::函数"的指针中的 lambda?
How to call the lambda stored in pointer to the `std::function`?
我有一个指向std::function
的指针,该指针将lambda存储在其中。 我怎么能称呼它为lambda?
例:
std::function <void()>* fx = new std::function <void()>([] {std::cout << "Hello world;n"; });
//here i need to call my fx, just fx(); does not works in this case
fx
可以存放在std::pair
内
您可以通过以下方式之一调用它:
-
取消引用指针和调用
(*fx)();
-
或显式调用
std::function<R(Args...)>::operator()
fx->operator()(); // explicitly calling the `operator()`
-
或使用
std::invoke
std::invoke(*fx); // needed C++17 or later
但是,您应该重新考虑使用指向std::function
的指针,这通常不是必需的。
fx
可存放在std::pair
内
这实际上并不重要,因为您需要首先获取货币对的元素(即pair.first
或pair.second
( 并调用存储的 lambda,如上所述。例如,如果pair.second
是您fx
(*pair.second)();
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 函数调用中参数的顺序重要吗
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在c++类上调用void函数
- 为什么 std::unique 不调用 std::sort?
- 调用专用模板时出错"no matching function for call to [...]"
- 选择要调用的构造函数
- C++为什么尽管我调用了void函数,它却不起作用
- 构造函数正在调用一个使用当前类类型的函数
- 变量没有改变?通过向量的函数调用
- 没有为自己的结构调用列表推回方法
- 调用'begin(int [n])'没有匹配函数
- 函数何时会在c++中包含stack_Unwind_Resume调用
- C++17标准对在nullptr上调用delete有何规定
- 当 int 方法工作正常时,void 方法有何不同,或者为什么我不能调用 void 方法?
- 关于在矢量上调用clear如何改变容量,标准有何规定