I recently asked the question http://stackoverflow.com/questions/2380803/is-the-behavior-of-return-x-defined
The result was about what I expected, but got me thinking about a similar situation.
If I were to write
class Foo
{
...
int x;
int& bar() { return x++; }
};
Where bar now returns an int reference, is this behavior defined? If the answer to the previous question is literally true and not just a convenient abstraction of what's going on, it would seem you'd return a reference to a stack variable that would be destroyed as soon as the return was executed.
If it is just an abstraction, I'd be interested to know what behavior is actually guaranteed by a post-increment.