You can argue that when it removes features it provides a replacement (sometimes), but that does not change the fact that if you have any reasonably large project (>1 million LOC), every standard upgrade will break your app.
One of the main reasons we write all new code in Rust and are migrating the C++ code base step by step to Rust is because Rust offers infinitely better backward compatiblity guarantees than C++.
Rust never ever breaks your code, and you can opt-in to newer Rust editions for new code only, and these are ABI compatible with Rust code written using older editions.
MSVC: https://github.com/onqtam/doctest/issues/183
GCC:
- https://invent.kde.org/qt/qt/qtbase/-/commit/8252ef5fc6d0430...
- https://invent.kde.org/qt/qt/qtbase/-/commit/cb2da673f53815a...