是否可以在catch子句中进行co_await?

Phi*_*ppe 4 c++ c++20 c++-coroutine

如下代码:

try {
  throw 42;
} catch (int i) {
  co_await somefuture;
}
Run Code Online (Sandbox Code Playgroud)

用-fcoroutines-ts用clang 6和7编译。但是,它无法与Visual C ++ 15(2017)Visual C ++ 16(2019)一起使用/ await编译并出现错误

C2304:不能在catch块内使用'co_await'

C ++ 20标准草案和cppreference似乎没有提及任何内容。

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

Bar*_*rry 10

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

一个AWAIT表达应仅在该内潜在评估表达出现化合物语句一个的功能体 一个外处理程序([除外])

MSVC是正确的拒绝对象。