如何调用存储在指向 std::function 的指针中的 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
may be stored inside std::pair
这实际上并不重要,因为您需要首先获取对的元素(即 pair.first
或 pair.second
)并调用存储的 lambda,如上所述。例如,如果 pair.second
是您的 fx
(*pair.second)();
我有一个指向 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
may be stored insidestd::pair
这实际上并不重要,因为您需要首先获取对的元素(即 pair.first
或 pair.second
)并调用存储的 lambda,如上所述。例如,如果 pair.second
是您的 fx
(*pair.second)();