|To what extent do you agree, please?|
You've shown you really don't want to hear/read this, but you asked. But really, do prove me wrong. I won't be offended.
AND you prove you are not willing to take criticism or advice by being a piss-ant report monkey.
Disagree totally. Stroustrup knows more about C++ than most C++ programmers. Even long-time C++ programmers. You liking a different way to do things is not really up for debate, unless you can convince the ISO committee your way is:
2. less error prone.
3. doable without breaking other parts of C++.
There are definite parts of C++ that I don't like and IMO could be done better. But from my admittedly limited experience deviating from PROVEN practices for trying to write bullet-proof code can be risky and likely to make code buggy.
. Not the most elegant interface in a few particulars, the designers could have done things differently. But that interface every programmer knows how to deal with. Changing the interface could break a LOT of pre-existing code.
Smart pointers is another area IMO with lvalue/rvalue/move semantics that could be "improved."
Exactly how? I have vague ideas how, but the ISO committee made their choices for reasons I don't know about. And honestly would not understand if I was told why.
Regarding your function: you wrote a contract the function would return a value. If you do not return a value every time you violate that contract.
Returning nothing (no explicit return
statement) is not part of the contract you wrote and agreed to abide by. C++ is filing a lawsuit -- warning/error message(s) -- for failure to uphold the contract you made.