Verhalten der using-Direktive

8

Ich bin verwirrt über die Verwendung von Direktive.

Gemäß C ++ 11 Standard §7.3.4 S.3,

Eine using-Anweisung fügt dem deklarativen Bereich, in dem sie angezeigt wird, keine Member hinzu.

Darüber hinaus behandelt der C ++ 11-Standard §7.3.4 keine qualifizierte Namenssuche.

Daher hat IMHO using-directive keinen Einfluss auf die Suche nach qualifizierten Namen.
Ich denke beispielsweise, dass der folgende Beispielcode einen Kompilierungsfehler verursachen sollte.

%Vor%

Aber sowohl gcc als auch clang kompilieren diesen Code erfolgreich. ( Ссылка )

Darüber hinaus besagt C ++ 11 Standard §7.3.1.1, dass sich eine unbenannte Namespace-Definition so verhält, als wäre sie durch

ersetzt worden %Vor%

und zeigt folgendes Beispiel (der unnötige Teil wurde weggelassen).

%Vor%

In diesem Beispiel wird angegeben, dass A::i der Funktion h auf das unbenannte Namespacemitglied i verweisen kann.

Hilf mir, ich kann es nicht mehr verstehen.

Würdest du mir die richtige Interpretation der using-Direktive beibringen?

    
Mitsuru Kariya 31.12.2013, 07:42
quelle

1 Antwort

2

Nach 7.3.4

  

Eine using-Direktive gibt die Namen im nominierten Namespace an   kann in dem Bereich verwendet werden, in dem die using-Direktive danach erscheint   die Verwendungsrichtlinie. Bei der Suche nach unqualifizierten Namen (3.4.1)   Namen erscheinen so, als wären sie in der nächsten Einhüllenden deklariert   Namensraum, der sowohl die using-Direktive als auch die nominierte enthält   Namensraum. [Hinweis: In diesem Kontext bedeutet "enthält" "enthält   direkt oder indirekt". - Endnote]

     

Eine using-Direktive fügt dem deklarativen Bereich keine Member hinzu   in dem es erscheint.

Die obige Interpretation besagt, dass eine using-Direktive die Namen in einen Bereich zieht, aber nicht die Deklaration (Namespacemitglied), sich selbst.

Dies könnte es veranschaulichen:

%Vor%

Im zweiten Beispiel gibt es zwei unbenannte Namespaces:

Einige kleine Änderungen anwenden:

%Vor%     
Dieter Lücking 31.12.2013, 09:04
quelle

Tags und Links