
On 11/17/2010 8:59 PM, Nevin Liber wrote:
On 17 November 2010 16:23, Edward Diener<eldiener@tropicsoft.com> wrote:
Alternatively I could even see putting all the operator traits in their own namespace of 'boost::operators', dropping the 'operator_' in their name, and allowing the end-user to surface them to just the 'boost' namespace via a using declaration as they like. But then again, I am a very strong supporter of namespaces and allowing the end-user to expose what they want from namespaces via 'using'.
The problem, of course, is when you need them in a header, where using declarations cannot be scoped. This makes Boost.Multi-index a bit unwieldly, for example.
You are right about using directives but, I believe, it would always be possible to provide a header with using declarations for boost::operators which, when included, could bring them directly into the boost namespace if so desired. As a simple example: namespace XX { void AFunction(); } namespace YY { using XX::AFunction; } One can now refer to YY::AFunction() from some source code. I have 'hoisted' XX::AFunction() into another namespace so to speak.
I really don't mind if it gets spelled with namespaces instead of underscores, but a using declaration is not a motivation for it.
OK. But I prefer namespaces rather than decorating names with some common 'prefix' to show commonality. I personally believe as an end-user that there is the tendency to pile too much directly into the boost namespace.