Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;co_wait表达式中的协程临时变量_C++_C++20_C++ Coroutine - Fatal编程技术网

C++ c++;co_wait表达式中的协程临时变量

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正在修复中。临时变量在完整表达

我想知道,等待与引用捕获的临时协同路由的co_是否有效。那么下面的代码是否有效,我想编译器应该将临时变量作为局部变量放在协程框架中:

task g(const S&);

task f() {
    co_await g(S{});
}

在clang和msvc()上,临时变量似乎在g恢复后被删除,无论在gcc()上,临时变量似乎在初始暂停后被销毁。

msvc和clang是正确的,临时变量在完整表达式结束时被销毁


对于GCC,这是一个bug。显然,这个bug正在修复中。

临时变量在完整表达式的末尾被销毁。如果没有协同程序,则意味着在;。以您的示例为例,我认为必须在协同程序恢复之后,co_wait表达式才在恢复之后结束。