Подтвердить что ты не робот

Почему аргумент по умолчанию для аргумента лямбда запускает "педантичное" предупреждение GCC?

У меня была эта лямбда где-то в моем коде:

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

и GCC 4.6 "жаловались" на это предупреждение:

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

Это очень бесполезно, когда вы не знаете, почему это "плохо". Я консультировался с FDIS n3290 и не нашел ничего в 5.1.2 Lambda Expressions в отношении аргументов по умолчанию и лямбда.

ОБНОВЛЕНИЕ: Я отправил отчет об ошибке здесь.

UPDATE2: Хорошо, теперь я использую -pedantic-errors. -pedantic генерирует предупреждения, а не ошибки.

4b9b3361

Ответ 1

В разделе 5.1.2 параграфа 5 указано, что вы не можете иметь значения по умолчанию для параметров.

Аргументы по умолчанию (8.3.6) не должны указываться в объявлении параметра-объявления lambda-declarator.

Ответ 3

Нет смысла иметь аргумент по умолчанию в лямбда-функции - как его можно использовать? С другой стороны, это не наносит вреда, так почему бы не позволить это после предупреждения?