如何调用存储在指向 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

里面

您可以通过以下方式之一调用它:

  1. 解引用指针并调用

    (*fx)();
    
  2. 或显式调用 std::function<R(Args...)>::operator()

    fx->operator()();  // explicitly calling the `operator()`
    
  3. 或使用 std::invoke

    std::invoke(*fx); // needed C++17 or later
    

但是,您应该重新考虑使用指向 std::function 的指针,这通常是不需要的。


fx may be stored inside std::pair

这实际上并不重要,因为您需要首先获取对的元素(即 pair.firstpair.second)并调用存储的 lambda,如上所述。例如,如果 pair.second 是您的 fx

(*pair.second)();