c++ lambda c++11

c++ - ¿Por qué un argumento predeterminado para un argumento lambda desencadena una "advertencia GCC"-pedativa?



c++11 (3)

Desde C ++ 14 está permitido . Se descubrió que era un defecto hace mucho tiempo: los argumentos predeterminados para lambdas y también los argumentos predeterminados en las expresiones lambda .

Tuve este lambda en algún lugar de mi código:

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

y GCC 4.6 "se quejó" con esta advertencia:

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

Lo cual es sumamente inútil cuando no sabes por qué esto es "malo". Consulté el FDIS n3290 y no encontré nada en 5.1.2 Lambda Expressions con respecto a los argumentos predeterminados y un lambda.

ACTUALIZACIÓN: he presentado un informe de error here .

ACTUALIZACIÓN2: OK, de ahora en adelante estoy usando -pedantic-errors . -pedantic solo emite advertencias, no errores.


La Sección 5.1.2, párrafo 5 dice específicamente que no puede tener valores predeterminados para los parámetros.

Los argumentos predeterminados (8.3.6) no se especificarán en la cláusula-declaración-parámetro de un declarador lambda .


No tiene sentido tener un argumento predeterminado en una función lambda, ¿cómo podría usarse? Por otro lado, no hace daño, entonces ¿por qué no permitirlo, después de emitir una advertencia?