
On Apr 28, 2008, at 9:50 AM, <Lance.Diduck@ubs.com> <Lance.Diduck@ubs.com
wrote: The model follwed by Xerces works very well, which is close to Rene Rivera described. The change would be that this namespace boost_1_35_0 { // boost libraries declared here }; namespace boost = boost_1_35_0; becomes namespace BOOST_NAMESPACE { // boost libraries declared here } namespace boost = BOOST_NAMESPACE; Where "BOOST_NAMESPACE" is something like #ifndef BOOST_NAMESPACE_OVERRIDE #define BOOST_NAMESPACE boost #else #define BOOST_NAMESPACE BOOST_NAMESPACE_OVERRIDE #endif //BOOST_NAMESPACE_OVERRIDE BOOST_NAMESPACE_OVERRIDE is something defined by the build. Then a person using multiple versions has a way to accomplish this, but the typical user does not have to worry about it. The user in now responsible for the version ing metadata, according to their own policies.
The Signals library does this, due to conflicts with another library. It's going to a bit of a pain for everyone re-opening namespace boost (as you've noted). Let's keep in mind that such things will be easier now that we have inline namespaces in the C++0x standard: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm Whatever we do should make it easy for us to make use of inline namespaces where available. - Doug