The concept of rvalues and lvalues didn't change from older C++ to C++11. What you describe as "C++03" is what should happen. Some compiler optimizations in some cases can reduce the number of unnecessary copies (including unnecessary copy-constructor calls!), but otherwise it is the same.
What did change is that C++11 introduced a concept of rvalue-reference (T&&
).
There are several articles on it that you can google up, for example over here:
http://thbecker.net/articles/rvalue_references/section_01.html