gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:48:34 25 4
gpt4 key购买 nike

我有一个指向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.firstpair.second)并调用存储的lambda,如上所述。例如,如果 pair.second是您的 fx
    (*pair.second)();

    关于c++ - 如何调用存储在指向 `std::function`的指针中的lambda?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62622459/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com