Declaração de classe no mesmo escopo que o uso de compilações de declaração no GCC, mas não no MSVS
O programa a seguir está bem formado de acordo com o padrão c ++?
namespace X { class A; }
namespace Y { using X::A; class A {}; }
int main() {}
Estou obtendo resultados diferentes com diferentes compiladores:
O gcc o compila sem erros.O visual c ++ fornece o erro C2888: 'X :: A': o símbolo não pode ser definido no espaço para nome 'Y'Não encontro nenhuma regra no padrão c ++ que meu programa viole.
Se o programa é bem formado, por que o visual studio comete um erro?
Se o programa não estiver bem formado, que regra no padrão c ++ ele violou e por que o gcc não comete um erro?
Não estou tentando fazer meu programa compilar. Só estou tentando descobrir se está bem formado de acordo com o padrão c ++ e por que os dois compiladores que testei se comportam de maneira diferente.