提问者:小点点

如何调用存储在指向`std::function`的指针中的lambda?


我有一个指向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


共1个答案

匿名用户

您可以使用以下任何一种方式来称呼它:

>

  • 取消引用指针和调用

    (*fx)();
    

    或者显式调用std::function::operator()

    fx->operator()();  // explicitly calling the `operator()`
    

    或使用std::invoke

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

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

    FX可以存储在std::pair

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

    (*pair.second)();