That is the role nothrow in placement new, and custom STL allocators as language tool.
Additionally plenty of APIs now have exception and error based versions with noexcept.
But even with exceptions enabled fallible allocation in practice does not work. There was an article that made malloc to return null randomly. All tested C++ implementations crashed then because they allocated memory when generating exceptions.
I am also curious to see how serious was that article.
You also skipped the section where Rust in its present state doesn't has any kind of recovery, it just panics.
Holy moving goalposts, batman!
The "don't pay..." thing has only ever applied to runtime, there nothing in there about not having to write more code yourself, etc.
(It's also a bit dubious in the first place. Chandler had a good talk about this at one of the CppCon's, IIRC. Can't be bothered to look it up, but it should be on YouTube.)