Почему аргумент по умолчанию для лямбда-аргумента вызывает "-пантичное" предупреждение GCC? - PullRequest
17 голосов
/ 08 июня 2011

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

[](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 выдаёт только предупреждения, а не ошибки.

Ответы [ 3 ]

14 голосов
/ 08 июня 2011

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

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

7 голосов
/ 06 марта 2016
1 голос
/ 08 июня 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...