class X { }; X funcX() { X x; return x; } int main() { X x2; funcX() = x2; return 0; }
x2 is assigned to the temporary returned by funcx().
If a built-in type, such as int was used instead of class X, the program would not compile. This is because for built-in return types, rvalues are returned. For user-defined return types, lvalues are returned. In the user-defined case, it is useless to assign to a returned temporary, and so this is is usually a runtime bug.
No comments:
Post a Comment