Раздел о лямбда-захвате ([expr.prim.lambda.capture]/5) гласит, что
Если идентификатор в простом захвате появляется как идентификатор объявления параметра предложения объявления лямбда-декларатора, то программа некорректна.
Рассмотрим следующий пример:
#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
Godbolt Демо здесь