Web lists-archives.com

Re: Mandates explicit -std=c++XY for c++ projects




On 10.10.2017 08:45, Mathieu Malaterre wrote:
> Dear all,
> 
> Since the GCC 6 release [1], the default mode for C++ is now
> -std=gnu++14 instead of -std=gnu++98. What this means is that upon
> (re)compilation a library written for c++98 will be recompiled using a
> different c++ standard (c++14 in this case), unless of course the
> upstream package explicitly set the -std= flags with the appropriate
> c++ version.
> 
> The ISO committee generally describe the change in between different
> standards [2] and in some case, one can find examples of subtle change
> in behaviors [3] and [4].
> 
> With this mind I'd like to make mandatory the -std=c++XY flags when
> compiling either a c++ library or a stand-alone c++ program:
> 
> 1. Either upstream define the explicit -std=c++XY flags by mean of its
> build system,
> 2. Or the package maintainers needs to explicit change the CXXFLAGS to
> pass the appropriate version of the c++ standard. In which case this
> should be documented in the README.Debian file.
> 3. As a fallback, dh should initialize the CXXFLAGS with -std=gnu++98
> 
> If there is a consensus on the following change, I'll go ahead and
> also file a bug for lintian to scan the compilation logs in search for
> missing -std=c++ expression when g++ command line are issued.

I don't think this is a good idea, and I'm still trying to understand what
problem you are trying to solve.  It took a while until GCC had stable c++11
support, and now you want to fallback to a 20 year old standard by default?

It would be better to spend some time to prepare for -std=gnu++17 instead ;)

Matthias