Class-Deklaration im selben Umfang wie die Verwendung von Deklarationskompilierungen in GCC, jedoch nicht in MSVS
Ist das folgende Programm gemäß dem c ++ - Standard wohlgeformt?
namespace X { class A; }
namespace Y { using X::A; class A {}; }
int main() {}
Ich erhalte mit verschiedenen Compilern unterschiedliche Ergebnisse:
gcc kompiliert es ohne Fehler.visual c ++ gibt Fehler C2888 zurück: 'X :: A': Symbol kann nicht im Namespace 'Y' definiert werdenIch finde keine Regel im c ++ - Standard, gegen die mein Programm verstößt.
Wenn das Programm gut ausgearbeitet ist, warum gibt Visual Studio einen Fehler aus?
Wenn das Programm nicht wohlgeformt ist, welche Regel im c ++ - Standard hat es verletzt und warum gibt gcc keinen Fehler aus?
Ich versuche nicht, mein Programm kompilieren zu lassen. Ich versuche nur herauszufinden, ob es gemäß dem c ++ - Standard wohlgeformt ist und warum sich die beiden von mir getesteten Compiler unterschiedlich verhalten.