是否可以在捕获条款中co_await

Is it possible to co_await in a catch clause?

本文关键字:co await 是否      更新时间:2023-10-16

以下代码:

try {
  throw 42;
} catch (int i) {
  co_await somefuture;
}
使用

clang 6 和 7 使用 -fcoroutines-ts 进行编译。但是,它不会使用 Visual C++ 15 (2017( 进行编译 Visual C++ 16 (2019( 并显示错误/await

C2304: "co_await"不能在捕获块内使用

C++20标准草案和cpp偏好似乎没有提到任何关于它的内容。

是Microsoft编译器中缺少的功能还是我误解了标准?

从 [expr.await] 中,强调我的:

等待表达式只能出现在处理程序之外的函数体复合语句中的潜在计算表达式中([除外](。

MSVC 拒绝是正确的。