首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不带箭头的gcc7 lambda表达式返回类型

不带箭头的gcc7 lambda表达式返回类型
EN

Stack Overflow用户
提问于 2018-07-17 13:04:28
回答 1查看 325关注 0票数 16

我无意中写了以下几封信,但没有得到gcc的警告:

代码语言:javascript
复制
auto f = []() bool {};

我从来没有听过或读过关于以前语法的任何东西。我的目的是写:

代码语言:javascript
复制
auto f = []() -> bool {};

在这种情况下,gcc发布了我期待的非常有用的警告:no return statement

我做了一些实验,GCC接受了第一种语法,没有警告或错误,至少自从GCC 7.1以来,但没有使用antis6.3。似乎没有其他编译器接受它。此外,第一种语法被接受为本机类型:bool int float和诸如此类,但对于类(如struct A {};)则不接受。

这是一个错误,还是一个新的c++17或c++20语法相关,例如,属性?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-17 13:16:23

这似乎是个侥幸。只要你有GCC 7或8,代码(但不像你所指出的警告)是相同的,只要你有GCC 7或8。但是GCC 6不接受它,也不接受我尝试过的任何其他编译器。

它似乎不是有效的C++。它肯定不是为C++20添加的,因为GCC 7没有添加任何C++20特性 (尽管8确实添加了一些)。

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

https://stackoverflow.com/questions/51382147

复制
相关文章

相似问题

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