Scope ala (package, internal) in C++ möglich?
-
Ich wollte hier nicht "bewerben" es dem Programmierer leicht zu machen, etwas falsch zu verwenden.
Ich meine lediglich dass man es einerseits in C++ nie wirklich wasserdicht hinbekommt, und dass es andrerseits oft viel zu viel Aufwand wäre (bzw. ganz unmöglich) alles mit "friend" zu machen.Daher finde ich "Detail" Namespaces eine gute Möglichkeit. Vor allem weil das eine Konvention ist, die nun wirklich fast jeder kennen sollte. Bzw. ist es auch nicht schwer draufzukommen was gemeint ist, wenn man sowas noch nie gesehen hat.
Schliesslich kommt ja auch wohl keiner auf die Idee _TreeBase (oder wie genau die Klasse heisst) aus der MSVC Standard-Library Implementierung zu verwenden. Und die Klassen leben noch nichtmal in einem Detail Namespace.
----
Die einzige Möglichkeit, die mir jetzt einfällt, wie mit Detail Namespaces unabsichtlich etwas passieren könnte, ist ADL (aka. Koenig Lookup). Und selbst da kann ich im Moment kein gutes Beispiel konstruieren. Und natürlich beschränkt sich das "Problem" ADL auch nicht auf Detail Namespaces. Nicht umsonst wird boost::noncopyable in einem eigenen Namespace definiert, und dann nur per "using" in den "boost" Namespace gezogen.