我正在乱搞lambdas。对于那些不知道的人,他们看起来像这样:
[] () { };
我删除了括号,但仍然可以编译。
[] {};
这是怎么回事?
答案 0 :(得分:3)
标准,
如果 lambda-expression 不包含 lambda-declarator,就好像 lambda-declarator 是{{1} }。
(C ++ 11中的[expr.prim.lambda] / 4)
答案 1 :(得分:3)
lambda声明符是可选的。 §5.1.2[expr.prim.lambda]
λ-表达式:
lambda-introducer lambda-declarator opt compound-statement
lambda-declarator 的位置是:
λ-说明符:
(parameter-declaration-clause)mutable opt
异常规范 opt attribute-specifier-seq opt trailing-return-type opt
它也在§5.1.2/ 4中说;
如果 lambda-expression 不包含lambda声明符,那就好像 lambda-declarator 是
()
。