В разделе о лямбда-захвате ([expr.prim.lambda.capture] / 5 ) говорится, что
Если идентификатор в простом захвате появляется как декларатор-id параметра параметра-объявления-объявления лямбда-оператора, программа некорректно сформирована.
Рассмотрим следующий пример:
#include <iostream>
int main ()
{
auto foo = 1234;
auto bar = [foo](int foo) { std::cout << foo << '\n'; };
bar(4321);
}
Последняя версия GCC(8.2.0 - выпущено 26 июля 2018 г.) не имеет диагностики для этого.Не подходит и последняя версия Clang (7.0.0 - выпущена 19 сентября 2018 г.).
Должна ли быть диагностика (ошибка / предупреждение) от этих компиляторов (как упомянуто в справке) по следующим направлениям:
// parameter and simple-capture have the same name
Демонстрация Годболта здесь