What does your explanation have to do with the fact that C++ can express by-value returns of complex objects?