
On June 4, 2016 10:59:16 PM EDT, Edward Diener
On 6/4/2016 9:28 PM, Rob Stewart wrote:
Edward, you've missed that Vicente doesn't see that importing either
a Boost or a Standard Library solution, into a common namespace requires anything more of the user.
The user would always use the new, common namespace name for
something, regardless of its original namespace. For example, foo::x is the common name, but x may have been introduced into the foo namespace, by a using directive, from the boost or the std namespace.
In the end, the user always includes the foo header and uses the foo
name. There are no macros in the user's code. Both solutions select one implementation or the other. Yours refers to the namespace of the selected implementation with a macro, while his just uses namespace foo.
It does involve more work and macros are still being used, although not
to name the namespace. I honestly think that CXXD's solution is cleaner
and more flexible. Lifting constructs which are normally accessed through one namespace to another namespace in that way seems to me a kludge. I am not sure of all the ramifications of doing this but I would be wary of doing such a thing myself.
You also don't have the technique of overriding the dual library choice
that you have with CXXD, unless you manually change some source, which you may not have access to in the first place. But if you think the CXXD macros are going to cause problems, just because they are macros and therefore "evil', by all means roll your own solution as Vicente has done.
See whether you still think so after reading my reply to Niall. ___ Rob (Sent from my portable computation engine)