Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ gcc7 lambda表达式返回类型,不带箭头_C++_Gcc - Fatal编程技术网

C++ gcc7 lambda表达式返回类型,不带箭头

C++ gcc7 lambda表达式返回类型,不带箭头,c++,gcc,C++,Gcc,我无意中写了以下内容,但没有收到gcc 8的任何警告: auto f = []() bool {}; 我从未听说过或读过关于前面语法的任何内容。我的意图是写: auto f = []() -> bool {}; 在本例中,gcc发出了我所期望的非常有用的警告:no return语句 我做了一些实验,GCC在没有警告或错误的情况下接受了第一个语法,因为至少GCC 7.1,但GCC 6.3不接受。似乎没有其他编译器接受它。此外,第一种语法也适用于本机类型:boolintfloat等,但不适

我无意中写了以下内容,但没有收到gcc 8的任何警告:

auto f = []() bool {};
我从未听说过或读过关于前面语法的任何内容。我的意图是写:

auto f = []() -> bool {};
在本例中,gcc发出了我所期望的非常有用的警告:
no return语句

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


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

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


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

您将传递什么作为
-std=
?可能是GNU扩展?我没有传递任何选项,这发生在默认编译器配置上。这只适用于gcc。Clang、MSVC和ICC拒绝编译它:C++是一种复杂的语言。因此,解析它也很复杂,而且不平凡。这意味着编译器将有bug。在99.9999%的情况下,它不会是编译器中的错误,但您似乎找到了一个。:)所以我建议你去看看。@Someprogrammerdude在讨论了他们的IRC之后,他们开了一张罚单:这个错误在GCC9中修复了