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

时间:2019-04-12 13:01:08

标签: c++ c++20 c++-coroutine

以下代码:

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

用-fcoroutines-ts用clang 6和7编译。但是,它无法使用带有/ await的Visual C ++ 15(2017)Visual C ++ 16(2019)进行编译

  

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

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

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

1 个答案:

答案 0 :(得分:10)

[expr.await]中,重点是我:

  

await-expression仅应在{em>功能体 compound-statement 中的可能评估的表达式中出现。 3}}([例外])

MSVC是正确的拒绝对象。