The evidence is that everyone could do what you showed and they don't, they do this instead. In my experience memory ownership bugs are almost non-existent, an entire class of problems is wiped out.
It's clear that since you're asking about this stuff you haven't actually gone down this road yourself, which means that you're railing against something you don't understand out of fear of something different.
#include <vector>
using namespace std;
vector<int> makeVec() {
vector<int> v{1,2,3};
return move(v);
}
int main() {
auto a = makeVec();
return 0;
}
Not difficult or complex. In this case you have something that isn't a constructor returning a data structure that contains heap allocation. You don't have to guess at ownership or dig through documentation (if it exists).Keep an open mind, there's a reason people consider old C style archaic.