Доступ к автоматическим переменным из лямбда-выражений cpprest

Предположим, у меня есть:

void f()
{
SomeClass someObject;
pplx::create_task([&]()-> SomeClass { return someObject; });
}

void g()
{
//Allocate automatic objects
}

int main()
{
f();
g();
}

Это гарантированно сработает? моя логика говорит нет, так как к тому времени, когда задача выполняется someObject может быть вне области.

0

Решение

Это зависит. Если лямбда (или ее копия) никогда не используется после f() возвращается, все хорошо. Потом конечно return someObject оценивает ссылку на объект, который больше не существует, что является неопределенным поведением.

1

Другие решения