以下代码:
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编译器中缺少的功能还是我误解了标准?
答案 0 :(得分:10)
在[expr.await]中,重点是我:
await-expression仅应在{em>功能体 的 compound-statement 中的可能评估的表达式中出现。 3}}([例外])。
MSVC是正确的拒绝对象。