Right, and on a good day you might get named return value optimization.
http://msdn.microsoft.com/en-us/library/ms364057(v=vs.80).as...
If the compiler can figure out what you're doing, the huge_object you declared can be aliased to an object in the caller's stack frame which results in no copies or moves at all.