On Sat, 3 Nov 2018 at 14:41, Andrey Semashev via Boost < boost@lists.boost.org> 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 easier]?
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]. degski -- *“If something cannot go on forever, it will stop" - Herbert Stein*