
on 04.05.2010 at 19:36 Stewart, Robert wrote :
DE wrote:
i don't understand how is that different to
X operator- (const X &x) { X ret(x); //modify 'ret' return ret; }
As the article states, the compiler can elide the copy in various cases. With your version, the copy is unconditional.
now i'm confused will the copy be elided in this case?
what about idiomatic
return X().swap(x); //x is modified
That incurs the default constructor overhead, whatever that may be, before the swap. i see
That also requires that the function argument be a reference to non-const X and the caller would be justifiably surprised at the effect. of course or 'x' being an argument passed by value
but what about copy elision? -- Pavel P.S. if you notice a grammar mistake or weird phrasing in my message please point it out