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. Thanks for your comments, [1] https://gcc.gnu.org/gcc-6/changes.html [2] https://isocpp.org/files/papers/p0636r0.html [3] https://stackoverflow.com/questions/23980929/what-changes-introduced-in-c14-can-potentially-break-a-program-written-in-c1 [4] https://stackoverflow.com/questions/46650351/what-changes-between-c98-and-c11-show-difference-in-behavior