Używanie deklaracji dla członka klasy jest deklaracją członka (C ++ 2003)

Punkt 7.3.3. standardu C ++ 2003 stwierdza, że

Używanie deklaracji dla członka klasy jest deklaracją członka.

Oznacza to, że następujący błąd powoduje błąd składniowy:

struct S1
{
    static int var1;
};

using S1::var1;

Podczas gdy następująca kompiluje dobrze:

namespace N2
{
    int var2;
}

using N2::var2;

Czy ktoś zna uzasadnienie (jeśli takie istnieje)?

Co więcej, standard podaje wyraźny przykład ze statycznym elementem danych struktury i mówi, że powinien on powodować błąd składniowy. MS C ++ podaje ten błąd:

cpptest1.cxx (9): błąd C2885: „S1 :: var1”: niepoprawna deklaracja użycia w zakresie nieklasowym

Nadal nie jest jasne, dlaczego należy to zabronić.

questionAnswers(1)

yourAnswerToTheQuestion