代码之家  ›  专栏  ›  技术社区  ›  Guillaume Gris

GCC7 lambda表达式返回类型,不带箭头

  •  15
  • Guillaume Gris  · 技术社区  · 8 年前

    我无意中写了以下内容,没有得到GCC 8的警告:

    auto f = []() bool {};
    

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

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

    在这种情况下,GCC会发出非常有用的警告: no return statement .

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

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

    1 回复  |  直到 8 年前