co_await 表达式中的 c++ 协程临时变量
c++ coroutines temporaries in co_await expressions
我想知道 co_awaiting 具有通过引用捕获的临时值的协程是否有效。那么下面的代码是否有效,我想编译器是否应该将临时变量放在协程框架中作为局部变量:
task g(const S&);
task f() {
co_await g(S{});
}
在 clang 和 msvc (https://godbolt.org/z/HqHae8), the temporary seems to be detroyed after g is resumed, whether on gcc (https://godbolt.org/z/hFWvU-) 上,似乎临时文件在初始挂起后被销毁。
MSVC 和 Clang 是对的,临时对象在完整表达式的末尾被销毁。
对于 GCC,这是错误 95599。显然这个错误正在修复中。
我想知道 co_awaiting 具有通过引用捕获的临时值的协程是否有效。那么下面的代码是否有效,我想编译器是否应该将临时变量放在协程框架中作为局部变量:
task g(const S&);
task f() {
co_await g(S{});
}
在 clang 和 msvc (https://godbolt.org/z/HqHae8), the temporary seems to be detroyed after g is resumed, whether on gcc (https://godbolt.org/z/hFWvU-) 上,似乎临时文件在初始挂起后被销毁。
MSVC 和 Clang 是对的,临时对象在完整表达式的末尾被销毁。
对于 GCC,这是错误 95599。显然这个错误正在修复中。