首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >co_await no不再使用GCC12进行编译

co_await no不再使用GCC12进行编译
EN

Stack Overflow用户
提问于 2022-05-31 15:36:11
回答 1查看 100关注 0票数 2

我有这样的代码:

代码语言:javascript
复制
auto func() -> asio::awaitable<void> {
    try {
        co_await async_operation();
    } catch(boost::system::system_error const& e) {
        co_return co_await another_async_operation();
    }
}

这个代码在GCC 11上运行得很好,但是与GCC 12的代码不能编译:

代码语言:javascript
复制
file.cpp:3:19: error: await expressions are not permitted in handlers
  3 |         co_return co_await another_async_operation();
    |                   ^~~~~~~~

那是为什么,我怎样才能修好它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-31 15:40:05

这在[expr.await]/2中是明确禁止的。

等待表达式只能出现在处理程序(except.pre)外部的函数体的复合语句中,该表达式具有潜在的计算能力。

这里的错误消息非常清楚:不能在异常处理程序中等待。它以前编译的是一个bug,这一直是规则(P0912R5)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72450588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档