using im namespace



  • Ist folgendes schlechter Stil :

    In der Headerdatei:

    namespace meinnamespace
    {
       using std::vector ;
       using std::pair ;
       using std::istream ;
    }
    

    Wie ist in dem Fall die Sichtbarkeit von std::vector, pair,istream ?


  • Mod

    Wie ist in dem Fall die Sichtbarkeit von std::vector, pair,istream ?

    Der Name vector wird in meinnamespace deklariert, als ob er ein Member davon wäre.



  • Arcoth schrieb:

    Wie ist in dem Fall die Sichtbarkeit von std::vector, pair,istream ?

    Der Name vector wird in meinnamespace deklariert, als ob er ein Member davon wäre.

    Nur ohne ADL.


  • Mod

    Vielleicht habe ich das etwas widersprüchlich formuliert:

    vector ist ein Member von meinnamespace , genau wie es ein Member vom Namensraum std ist.

    Für ADL werden Member die über using -Deklarationen deklariert wurden aber explizit ausgeschlossen:

    §3.4.2/2 schrieb:

    Typedef names and using-declarations used to specify the types do not contribute to this set.

    Demnach kompiliert

    namespace A
    {
    	class AClass {};
    }
    
    namespace B
    {
    	using A::AClass;
    
    	void f( AClass );
    }
    
    int main()
    {
    	f( A::AClass{} );
    }
    

    nicht. Denn B gehört nicht zur Menge der assoziierten Namensräume von A::AClass .


Anmelden zum Antworten