我的代码中有这个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
仅发出警告,而不是错误。
答案 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函数中有一个默认参数是没有意义的 - 它怎么可能被使用?另一方面,它没有坏处,所以为什么不发出警告后才允许它?