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 ?
-
Wie ist in dem Fall die Sichtbarkeit von std::vector, pair,istream ?
Der Name
vectorwird inmeinnamespacedeklariert, als ob er ein Member davon wäre.
-
Arcoth schrieb:
Wie ist in dem Fall die Sichtbarkeit von std::vector, pair,istream ?
Der Name
vectorwird inmeinnamespacedeklariert, als ob er ein Member davon wäre.Nur ohne ADL.
-
Vielleicht habe ich das etwas widersprüchlich formuliert:
vectorist ein Member vonmeinnamespace, genau wie es ein Member vom Namensraumstdist.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
Bgehört nicht zur Menge der assoziierten Namensräume vonA::AClass.