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?