繁体   English   中英

没有箭头的gcc7 lambda表达式返回类型

[英]gcc7 lambda expression return type without arrow

我偶然写下了以下内容并且没有使用gcc 8发出警告:

auto f = []() bool {};

我从未听过或读过有关以前语法的任何内容。 我的意图是写:

auto f = []() -> bool {};

在这种情况下,gcc会发出我预期的非常有用的警告: no return statement

我做了一些实验,GCC接受了第一种语法,没有任何警告或错误,因为至少是GCC 7.1,而不是GCC 6.3。 没有其他编译器似乎接受它。 此外,本机类型接受第一种语法: bool int float等,但不适用于struct A {};

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM