After reading this article on Herb Sutter\'s blog, I experimented a bit and ran into something that puzzles me. I am using Visual C++ 2005, but I would be surprised if this
The standard allows a copy to occur when binding a temporary to a const reference. In your case, VC++ performs a copy only when the constructor is implicitly defined. This is unexpected, but permitted.