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-03 13:21:33

On Sat, 3 Nov 2018 at 14:41, Andrey Semashev via Boost <
boost_at_[hidden]> wrote:

> On 11/3/18 2:47 PM, Cromwell Enage via Boost wrote:
> > Hello, Andrey.
> >
> > It's possible to retain the old code for C++03 compilers. Which ones do
> > your library users have?
> I don't have this data. Boost.Log is documented to support gcc since 4.5
> and MSVC since 8.0 SP1. It might be ok to raise the minimum requirement
> a bit, if it makes it easier to support in Boost.Parameter and other
> lower level libraries, but switching sraight to C++11 might be big deal
> for users.

The following question has been asked many times by many posters and there
never is an answer: "Those users who want to stick to the old ways of doing
things and like to use unsafe compilers [Meltdown, Spectre come to mind],
why can't they just use old versions of Boost?" Why does the latest version
of Boost need to work with the oldest (limping) compiler in existence. If
you are [as a user] sticking to C++98 [forget C++03, that's just cosmetics]
you are seriously hampering yourself. Also as Edward points out, compiling
things with a later std does not imply that "the" user [or Boost] code
needs to change [at least in the case of C++11, there are very few changes
that are required].

There was, as far as I read it, considerable support to at least move to
C++11, which is already 2 standards behind the current standard [and is by
now fully supported on the main platforms]. Whatever is documented is not
relevant, if the docs are out of date, they have to be updated. If every
time this kind of question pops up, the answer is, "let's keep backward
compatibility", then when are we gonna move to a newer standard? Or to put
it differently, a direct question to you Andrey, at which point in time
[which new std, 20, 23, 26, 29, 32???] do you think it will be opportune to
move to C++11 and break with C++98 [because doing nothing will always be

> I'm not adamantly against it, not to the point I would
> rewrite Boost.Log just to stay C++03 compatible. But it would seem that
> the C++11 requirement is not that necessary in Boost.Parameter either -
> you can just keep the existing code in C++03 mode it it'll work as before.

I guess, it's always possible to write more code [that's what you ask all
maintainers to do] and work around the C++11 specificities? Why do we even
get/need new standards, if one can just as well keep writing code the old
way, it's absolutely useless [those new standards], the old stuff works.
There does not need to be a new Boost release either, it worked so far, and
we can write code to work around the bugs [that's what (some) people seem
to do] or just depend on known UB [as long as you don't change the
compiler, it will keep working].


*“If something cannot go on forever, it will stop" - Herbert Stein*

Boost list run by bdawes at, gregod at, cpdaniel at, john at