
David Abrahams wrote:
I think the actual problem is one of either interpretation of 8.5.3/5 or overspecification in that very paragraph. If, instead of saying,
"A temporary of type ``cv1 T2'' [sic] is created, and a constructor is called to copy the entire rvalue object into the temporary. The reference is bound to the temporary or to a sub-object within the temporary"
It said:
"A temporary of type ``cv1 T2'' [sic] is constructed using direct initialization from the rvalue object. The reference is bound to the temporary or to a sub-object within the temporary"
we'd be home free.
I'm not sure. When source and destinations un-cv types are the same or base/derived direct initialization and copy initialization are the same (per 8.5/14/4/2) and this fact was (viciously) exploited by the old auto_ptr. The only different I can think of is in the esoteric case in which the copying constructor is explicit. Rani