小编Joã*_*ael的帖子

C++ lambda对象的地址作为函数的参数

根据我的经验,似乎要么:

  • 在调用之后,在函数调用内创建的lambda表达式将被销毁
  • 调用一个函数,该函数期望std::function从lambda中创建一个临时对象(std :: function),并在调用后销毁该对象

使用以下代码片段可以观察到此行为:

const function<void()>* pointer;

void a(const function<void()> & f)
{
    pointer = &f;
}

void b()
{
    (*pointer)();
}

int main()
{
    int value = 1;
    std::cout << &value << std::endl;

    // 1: this works    
    function<void()> f = [&] () { std::cout << &value << std::endl; };
    a(f);

    // 2: this doesn't
    a([&] () { std::cout << &value << std::endl; });

    /* modify the stack*/
    char data[1024];
    for (int i = 0; i …
Run Code Online (Sandbox Code Playgroud)

c++ lambda c++11

7
推荐指数
1
解决办法
2970
查看次数

标签 统计

c++ ×1

c++11 ×1

lambda ×1