Взаимодействие между decltype и именем члена класса, отслеживающим внешнее имя

Этот код

int clash;

struct Foo {
  decltype(clash) clash;
};

тихо компилируется на clang, но не компилируется на gcc, выдавая ошибки

ошибка: объявление 'int Foo :: clash' [-fpermissive]

ошибка: изменяет значение 'clash' с 'int clash' [-fpermissive]

Похоже, что для возникновения ошибки необходимы 2 ингредиента:

Затенение должно выполняться членом класса (без проблем, если это локальная область действия функции).

decltype ([теневое имя]) должно использоваться в области теневого копирования до объявления [теневого имени].

Мой вопрос двоякий:

Оправдан ли gcc отказ от этого кода?Где это сказано в стандарте?

Ответы на вопрос(1)

Ваш ответ на вопрос