Interaktion zwischen decltype und Klassenmitgliedsname, die einen externen Namen schattiert
Dieser Code
int clash;
struct Foo {
decltype(clash) clash;
};
compiles still auf clang, aber nicht auf gcc zu kompilieren geben die Fehler
Fehler: Deklaration von 'int Foo :: clash' [-fpermissive]
error: Ändert die Bedeutung von 'clash' von 'int clash' [-fpermissive]
s scheint, dass 2 Zutaten erforderlich sind, damit der Fehler auftritt:
Das Shadowing muss von einem Klassenmitglied durchgeführt werden (kein Problem, wenn es sich um den lokalen Bereich einer Funktion handelt).
decltype ([Shadowed Name]) muss im Shadowing-Bereich vor der Deklaration von [Shadowing-Name] verwendet werden.
Meine Frage ist zweifach:
Ist gcc berechtigt, diesen Code abzulehnen?Wo steht das im Standard?