Interação entre decltype e nome do membro da classe que sombreia um nome externo

Este código

int clash;

struct Foo {
  decltype(clash) clash;
};

compila silenciosamente no clang, mas falha ao compilar no gcc, fornecendo os erros

erro: declaração de 'int Foo :: clash' [-fpermissive]

erro: altera o significado de 'choque' de 'int choque' [-fpermissive]

Parece que são necessários 2 ingredientes para que o erro ocorra:

A sombra deve ser feita por um membro da classe (não há problema se for o escopo local de uma função).

decltype ([nome sombreado]) deve ser usado no escopo de sombreamento antes da declaração de [nome sombreado].

Minha pergunta é dupla:

O gcc é justificado em rejeitar este código?Onde diz isso no padrão?

questionAnswers(1)

yourAnswerToTheQuestion