>
> Yes, those are real problems, but it's not reasonable for us to keep the
default at C++98/03 forever. GCC has already taken the plunge here, so a
lot of open-source code that doesn't work in C++11 onwards already
explicitly specifies an appropriate -std= flag.
>Could you clarify exactly what the issue is? Currently, if I have some
legacy C++98 code, the odds are that it just compiles with ${CXX}. If I
have new C++11 or C++14 code, then its build system likely sticks on the
required -std= flag and it builds independent of what the compiler default
is.
Why should new C++ code pay this tax to use the language that is currently
called C++, that is taught as C++, that is covered by books on C++, and so
on? C++98 is increasingly the odd one out, and it's the one where an
explicit -std= flag should be required.
What code would be broken by keeping the default at the language version
accepted by code that didn’t know about newer standards?
Any code written for modern GCC. Any code written for modern MSVC.
As long as we’re keeping support for C++98 in the front end, keeping the
default there doesn’t seem particularly arduous for us and will avoid
breaking third-party code.
At some point (although probably not for at least a decade) I expect we
will want to remove C++98 support from Clang.