如何调用存储在指向"std::函数"的指针中的 lambda?

How to call the lambda stored in pointer to the `std::function`?

本文关键字:quot 何调用 函数 指针 lambda std 存储 调用      更新时间:2023-10-16

我有一个指向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可存放在std::pair

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

(*pair.second)();