Nenhum diagnóstico do compilador quando o identificador em uma captura simples aparece como o ID do declarador de um parâmetro
A seção sobre lambda captura ([expr.prim.lambda.capture] / 5) afirma que
Se um identificador em uma captura simples aparecer como o ID do declarador de um parâmetro da cláusula parameter-statement-statement do lambda-declarator, o programa está mal formad
Considere o seguinte exemplo:
#include <iostream>
int main ()
{
auto foo = 1234;
auto bar = [foo](int foo) { std::cout << foo << '\n'; };
bar(4321);
}
versão mais recente do GCC (8.2.0 - lançada em 26 de julho de 2018) não tem diagnóstico para isso. Nem a versão mais recente do Clang (7.0.0 - lançada em 19 de setembro de 2018
Deve haver um diagnóstico (erro / aviso) desses compiladores (conforme mencionado na referência) ao longo das linhas de:
// parameter and simple-capture have the same name
Godbolt DemoAqu