В этом коде:
typedef int foo;
struct S
{
foo foo;
};
int main() {}
все версии clang -std=c++14
принимают этот код, однако все версии g++ -std=c++14
сообщают:
5 : error: declaration of 'foo S::foo' [-fpermissive]
foo foo;
^
1 : error: changes meaning of 'foo' from 'typedef int foo' [-fpermissive]
Правилен ли код?