为什么lambda参数的默认参数会触发一个“-CC”警告?

时间:2011-06-08 15:39:54

标签: c++ lambda c++11

我的代码中有这个lambda:

[](bool a, bool=true){ return !a;} }

和GCC 4.6“抱怨”这个警告:

warning: default argument specified for lambda parameter [-pedantic]

当你不知道为什么这是“坏”时,这是非常无益的。我咨询了FDIS n3290并且在5.1.2 Lambda Expressions中没有找到关于默认参数和lambda的任何内容。

更新:我提交了错误报告here

UPDATE2:好的,从现在开始我正在使用-pedantic-errors-pedantic仅发出警告,而不是错误。

3 个答案:

答案 0 :(得分:14)

第5.1.2节第5段明确规定您不能拥有参数的默认值。

  

默认参数(8.3.6)不得在 lambda-declarator parameter-declaration-clause 中指定。

答案 1 :(得分:7)

自C ++ 14 it is allowed以来。很久以前发现它是一个缺陷:Default arguments for lambdas,还有Default arguments in lambda-expressions

答案 2 :(得分:1)

在lambda函数中有一个默认参数是没有意义的 - 它怎么可能被使用?另一方面,它没有坏处,所以为什么不发出警告后才允许它?