Die Verwendung der Deklaration für ein Klassenmitglied ist eine Mitgliederdeklaration (C ++ 2003).

Absatz 7.3.3. von C ++ 2003 Standard besagt, dass

Die Verwendung der Deklaration für ein Klassenmitglied ist eine Mitgliederdeklaration.

Dies bedeutet, dass Folgendes einen Syntaxfehler ergibt:

struct S1
{
    static int var1;
};

using S1::var1;

Während das Folgende gut kompiliert:

namespace N2
{
    int var2;
}

using N2::var2;

Kennt jemand die Gründe (falls vorhanden) dafür?

Darüber hinaus enthält der Standard ein explizites Beispiel für ein statisches Datenelement der Struktur und weist darauf hin, dass dies einen Syntaxfehler verursachen sollte. MS C ++ gibt diesen Fehler:

cpptest1.cxx (9): Fehler C2885: 'S1 :: var1': Keine gültige using-Deklaration in einem nicht-Klassenbereich

Es ist immer noch nicht klar, warum dies verboten werden sollte.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage