从cpprest lambda表达式访问自动变量

Accessing automatic variables from cpprest lambda expressions

本文关键字:变量 访问 表达式 cpprest lambda      更新时间:2023-10-16

假设我有:

void f()
{
    SomeClass someObject;
    pplx::create_task([&]()-> SomeClass { return someObject; });
}
void g()
{
    //Allocate automatic objects
}
int main()
{
    f();
    g();
}

这保证工作吗?我的逻辑说没有,因为当任务运行时,someObject可能超出范围。

看情况。如果在f()返回后没有使用lambda(或其副本),则一切正常。当然之后return someObject是评估一个对象的引用,不再存在,这是未定义的行为。