
There as a discussion before where a proposition was to have two high versions of boost : 1.xx (like the current ones) that would be guaranteed to work with C++03 compilers, 2.xx that would require C++11 compilers. 1.xx would contain all the libraries but the ones requiring C++11 2.xx would contain all the libraries but the but the ones that cannot work on a C++11 compiler (I guess none) plus libraries (and versions of libraries) requiring C++11. Maybe 2.xx could even remove libraries that would be considered obsolete by the new standard. That would be too much work I guess.
I like this idea. Here's how I envision it might work: - At some point, we decide to fork Boost into Boost v1 and Boost v2. This will probably have to wait until the major compilers have reasonably complete C++11 support, so we don't have to be backwards-compatible to incomplete C++11 implementations. Obviously small issues can be worked around, but the big features should be there. At the moment of the fork, all libraries are still C++03-compatible. - Library authors/maintainers who are not interested in C++11 yet can continue treating the v1 and v2 forks of their libraries as one, making identical changes to both versions. - Library authors/maintainers interested in C++11 can start adding C++11 features to their v2 forks, or refactoring their v2 forks to take advantage of C++11 features (e.g. refactoring Boost.Fusion to use variadic templates). - For libraries which have started using C++11 in v2, and therefore their v1 and v2 forks are different, all new features and bug fixes would go into the v2 fork only by default. If it's a bug fix, or a feature that is possible even in the C++03 v1 implementation, and the library maintainer, or someone else, cares to do so, they can back-port the new feature to the v1 fork. - For libraries that are obsoleted by C++11, such as Boost.Move or Boost.Tuple, they would be kept around in v2 until all v2 forks that depend on them have been refactored to use the C++11 equivalents, at which point they will be deprecated and ultimately removed. Boost users who have upgraded to v2 have until this time to refactor their own code to use the C++11 equivalents as well. - Over time, there will be less and less interested in C++03 support, and the v1 fork will begin to fall into disuse. Ultimately, it too will be deprecated and removed (this will probably be in 10 years or more, by my guess). Thoughts? Regards, Nate