La declaración de uso para un miembro de la clase será una declaración de miembro (C ++ 2003)

Párrafo 7.3.3. de la norma C ++ 2003 establece que

El uso de la declaración para un miembro de la clase será una declaración del miembro.

Esto significa que lo siguiente da un error de sintaxis:

struct S1
{
    static int var1;
};

using S1::var1;

Mientras que lo siguiente compila bien:

namespace N2
{
    int var2;
}

using N2::var2;

¿Alguien sabe la razón (si alguna) detrás de eso?

Aún más, el estándar da un ejemplo explícito con el miembro de datos estáticos de la estructura y dice que debería causar un error de sintaxis. MS C ++ da este error:

cpptest1.cxx (9): error C2885: 'S1 :: var1': no ​​es una declaración de uso válida en un ámbito que no sea de clase

Todavía no está claro por qué esto debería ser prohibido.

Respuestas a la pregunta(1)

Su respuesta a la pregunta