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.