In C or C++, this isn't supposed to happen: a conformant implementation claiming to support e.g. C++17 would use ifdefs to gate off new C++20 library functions when compiling in C++17 mode.
I don't doubt this is true, but do you have an example? I think I haven't run into a build breaking like this in std in like maybe seven/eight years. In my experience breaking changes/experimental apis are typically ensconced in features or gated by editions.
Granted, it'd be nice to be able to enforce abi stability at the crate level, but managing that is its own can of worms.
I did find that the breakage rfc allows for breaking inference, which tbh seems quite reasonable... inference is opt-in.
Sorry, I meant to write “method resolution”, not inference. This isn’t the same issue as type inference (though indeed, stdlib changes can break that too)
Yes, but the code can be gated off with ifdefs to only be present when compiling for a particular version of the standard.
Neither do most programming languages.
> You are lucky if current version, compiles two years old code!
That's not true.
My favorite nemesis and friend JavaScript does, which always gives me a laugh. Such a mess of a wonderful language.
Rust is trying to replace C++ and C in particular. Those languages have specifications.