
David Abrahams wrote:
on Mon Nov 24 2008, Matthias Schabel <boost-AT-schabel-family.org> wrote:
This is a somewhat tangential thought, but ... what if each release of the Boost libraries was put into its own namespace, so we have code in
namespace boost_1_38_0 { ... }
rather than in namespace boost. Then, in end user code, you just need :
using namespace boost = boost_1_38_0;
It seems like this would allow certain deprecated Boost components (those that are not too strongly coupled to the rest of Boost) to be used at the same time as more recent components from other libraries :
using boost_1_32_0::iterator_range;
iterator_range<some_iterator> rng;
which might sidestep some of the recent iterator_range anarchy, and simplify other major transitions. N.B. I haven't really thought about the ramifications of doing this, so the idea might be completely unworkable in practice.
It also allows multiple versions of boost to exist in the same executable without ODR violations. The ability to configure boost that way would be most welcome.
Let's take this to its logical conclusion: suppose that there exists spirit160 (works with borland), spirit180, and just spirit(might not work for me) - the latest version Then I could say: ? namespace boost { #if BORLAND using namespace spirit = sprit_160 // too old for most compilers #elseif TESTING using namespace spirit = spirit// too new for most compilers #else using namespace spririt = spirit_180 // just rig #endif ... } To be able to maintain stuffworking in an environment where libraries have broken their original interfaces would be most welcome. Of course only the lastest would need testing on a regular basis. Robert Ramey