C++ c++;co_wait表达式中的协程临时变量
我想知道,等待与引用捕获的临时协同路由的co_是否有效。那么下面的代码是否有效,我想编译器应该将临时变量作为局部变量放在协程框架中:C++ c++;co_wait表达式中的协程临时变量,c++,c++20,c++-coroutine,C++,C++20,C++ Coroutine,我想知道,等待与引用捕获的临时协同路由的co_是否有效。那么下面的代码是否有效,我想编译器应该将临时变量作为局部变量放在协程框架中: task g(const S&); task f() { co_await g(S{}); } 在clang和msvc()上,临时变量似乎在g恢复后被删除,无论在gcc()上,临时变量似乎在初始暂停后被销毁。msvc和clang是正确的,临时变量在完整表达式结束时被销毁 对于GCC,这是一个bug。显然,这个bug正在修复中。临时变量在完整表达
task g(const S&);
task f() {
co_await g(S{});
}
在clang和msvc()上,临时变量似乎在g恢复后被删除,无论在gcc()上,临时变量似乎在初始暂停后被销毁。msvc和clang是正确的,临时变量在完整表达式结束时被销毁
对于GCC,这是一个bug。显然,这个bug正在修复中。临时变量在完整表达式的末尾被销毁。如果没有协同程序,则意味着在;。以您的示例为例,我认为必须在协同程序恢复之后,co_wait表达式才在恢复之后结束。