On Tue, May 28, 2024 at 07:35:43AM -0700, Paul Eggert wrote: > On 2024-05-28 01:20, Jonathan Wakely wrote: > > I am not aware of any distro ever changing the default -std setting for g++ > > or clang++. Are you attempting to solve a non-problem, but introducing new > > ones? > > If it's a non-problem for C++, why does Autoconf upgrade to C++11 when the > default is C++98? Autoconf has done so since Autoconf 2.70 (2020), with > nobody complaining as far as I know. > > Was the Autoconf 2.70 change done so late that it had no practical effect, > because no distro was defaulting to C++98 any more? If so, it sounds like That seems to be the case. Dunno about clang++ defaults, but GCC defaults to -std=gnu++98 (before GCC 6), or -std=gnu++14 starting with GCC 6 (April 2016), or -std=gnu++17 starting with GCC 11 (April 2021). So, if autoconf in 2020 c++98 default to c++11, bet it didn't affect almost anything. RHEL 7 uses GCC 4.8, which partially but not fully supports c++11 (e.g. GCC which is written in C++11 these days can build using GCC 4.8.5 as oldest compiler, has to use some workarounds because the C++11 support isn't finished there, the library side even further from that). And trying to enable C++11 on GCC 4.4 (RHEL 6) wouldn't be a good idea, too much was missing there. With C++20 in GCC 14, from core most of the features are in except that modules still need further work, for library side at least cppreference says it is complete too but I think the ABI hasn't been declared stable yet, so C++17 is still the default, dunno if it will change in GCC 15 or not. > Autoconf should go back to its 2.69 behavior and not mess with the C++ > version as that's more likely to hurt than help. Yes. > For background on that Autoconf 2.70 change, see this 2013 thread: > > https://lists.gnu.org/r/autoconf/2013-01/msg00016.html >From what I can see, the change was proposed when the C++11 support wasn't complete and didn't expect compilers will actually change their defaults when the support is sufficiently stable. Note, even for C GCC updates the default, -std=gnu99 default was changed to -std=gnu11 in GCC 5 (April 2015) and -std=gnu17 in GCC 8 (May 2018). -std=gnu23 support is still incomplete even in GCC 14. Jakub