我有一个指向std::function
的指针,它将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
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)();