
We should permit individual libraries to target only very recent compilers, if the library author so chooses and there is good reason.
I think this is the case with boost.lockfree. It is not easy to implement it without atomics, and there are no atomics for the C++03 (yet).
I already suggested that Tim add Lockfree to trunk with only C++11 support, so you're arguing against the wind, I guess.
And thus begins the downfall.
at one point, library authors will want to use c++11 language features which cannot be emulated like lambdas? of course we could use c++03 forever ... one way could be to provide a c++11-only version of boost (boost), which includes c++11 libraries and possibly strips all boost libraries, which have been included in c++11?
One library will start to depend on Lockfree, and soon it's all a right mess of trying to get anything to work on a perfectly conformant C++03 compiler.
boost.atomic cannot really be implemented in c++03, as it requires assembly code and/or thread locks ... so one will always have to use something on top like inline assembly or system-specific thread libraries ... but that is probably also the case for things like shared_ptr. that said, if a library starts to depend on lockfree, it can still be supported by old compilers, if boost.atomic will ever be added. i (as in boost.atomic review manager) would be very happy to see that someone adopts the library! iac, will try to add lockfree to trunk this weekend tim