Usar declaração para um membro da classe deve ser uma declaração de membro (C ++ 2003)

Parágrafo 7.3.3. do padrão C ++ 2003 afirma que

A declaração para um membro da classe deve ser uma declaração de membro.

Isso significa que o seguinte apresenta um erro de sintaxe:

struct S1
{
    static int var1;
};

using S1::var1;

Enquanto o seguinte compila bem:

namespace N2
{
    int var2;
}

using N2::var2;

Alguém conhece o raciocínio (se houver) por trás disso?

Ainda mais, o padrão fornece um exemplo explícito com o membro de dados estáticos da estrutura e informa que ele deve causar um erro de sintaxe. MS C ++ fornece este erro:

cpptest1.cxx (9): erro C2885: 'S1 :: var1': não é uma declaração de uso válida no escopo sem classe

Ainda não está claro por que isso deveria ser banido.

questionAnswers(1)

yourAnswerToTheQuestion