On Sat, 3 Nov 2018 at 16:17, Andrey Semashev via Boost < boost@lists.boost.org> wrote:
If by "move" you mean actively stripping Boost from C++03 support then probably never.
I mean it in the same way Peter describes, progress in libraries [using C++11, or later standards] might make certain libraries fall by the way-side.
But as far as I'm concerned, Boost has moved to C++11 and later as soon as the first C++11 was accepted.
One of the problems are the libraries that got accepted into the std, take std::array. Moving to C++11 means in my view using the std-equivalent instead of the Boost version [which then also shift the maintenance burden of those libs to the compiler vendor]. When you keep saying "let's keep backward compatibility", this precludes doing that, or do conditional compilation, throughout. At that point in
time, the rest of Boost, still compatible with C++03, did not disappear and stayed relevant. C++03-compatible libraries are still a part of Boost and very much relevant, despite how many C++ versions have come out.
A library is unconditionally C++03 compatible, is code-smell. Move-semantics and/or perfect forwarding will in almost all cases improve performance, variadic templates improve [user-]usability. On a personal note, I find this "C++11 holy cow" hype quite a pointless
waste of breath (or... network bandwidth, I guess).
To me and many, C++11 is a big departure from C++98, while, once you actually dig in, one starts to realize that C++17 is an equally big step.
There is no point in dropping libraries on the ground of C++03 compatibility, so that's never going to happen.
Sure not, like Edward also says, if it works, it works, no need to do anything. But that was not what you were saying, you said, please write some more code so that Boost.Parameter maintains C++03 compatibility.
Just stop debating and start writing some great code, guys! Our users will be only happy. :)
The thing is, that it's much easier to write great code using C++11, 14 and certainly C++17.
It's a tradeoff, of course. In some cases, C++11 or whatever might be crucial for the library design or functionality. The particular case with Boost.Parameter doesn't seem to me like one, so yes, I'd *prefer* to keep the compatibility with C++03.
At every junction it will always just seem a small step to keep C++03 compatibility, but eventually all those small steps [would] make a big journey, and it's not one that was taken, because at every crossing we said, let's not do that. I've been using Boost since about 2009 I would say.
If there appears a case that would make keeping the support for C++03 unreasonable (in Boost.Parameter or elswhere), I will accept it and Boost.Log, by induction, will become C++11-only.
Peter proposed to fork Boost.Parameter03, which seems reasonable to me, but then begs the question, why not for the whole of Boost and go Boost 2.0 [discussed many times I know]. degski -- *“If something cannot go on forever, it will stop" - Herbert Stein*