Programa com encadeamento de compilações de declarações de uso no MSVS e clang, mas não no GCC

O programa a seguir está bem formado ou mal formado de acordo com o padrão c ++?

namespace X { int i; }

namespace Y { using X::i; }

int main() { using X::i; using Y::i; }

Estou obtendo resultados diferentes com diferentes compiladores:

MSVS: Compila (http://webcompiler.cloudapp.net/ )Clang: Compiles (http://melpon.org/wandbox/permlink/KloDufJ5h1DalK4v )GCC: erro de compilação (http://melpon.org/wandbox/permlink/IKuuQGE1THofuUTr )

Não quero corrigir esse programa para compilá-lo no GCC. Eu só quero saber o que o padrão c ++ diz sobre isso e por que os três compiladores se comportam de maneira diferente. Também quero se isso é resultado de um bug em qualquer um desses compiladores.

questionAnswers(2)

yourAnswerToTheQuestion