Boost logo

Boost :

Subject: Re: [boost] [parameter] Go C++11 and above only, or keep C++03 support?
From: degski (degski_at_[hidden])
Date: 2018-11-04 08:03:12


On Sat, 3 Nov 2018 at 16:17, Andrey Semashev via Boost <
boost_at_[hidden]> 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*

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk