我无意中写了以下几封信,但没有得到gcc的警告:
auto f = []() bool {};我从来没有听过或读过关于以前语法的任何东西。我的目的是写:
auto f = []() -> bool {};在这种情况下,gcc发布了我期待的非常有用的警告:no return statement。
我做了一些实验,GCC接受了第一种语法,没有警告或错误,至少自从GCC 7.1以来,但没有使用antis6.3。似乎没有其他编译器接受它。此外,第一种语法被接受为本机类型:bool int float和诸如此类,但对于类(如struct A {};)则不接受。
这是一个错误,还是一个新的c++17或c++20语法相关,例如,属性?
发布于 2018-07-17 13:16:23
这似乎是个侥幸。只要你有GCC 7或8,代码(但不像你所指出的警告)是相同的,只要你有GCC 7或8。但是GCC 6不接受它,也不接受我尝试过的任何其他编译器。
它似乎不是有效的C++。它肯定不是为C++20添加的,因为GCC 7没有添加任何C++20特性 (尽管8确实添加了一些)。
https://stackoverflow.com/questions/51382147
复制相似问题