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.