|
Boost : |
Subject: Re: [boost] copy on write for std containers
From: Mathias Gaunard (mathias.gaunard_at_[hidden])
Date: 2010-12-05 06:11:09
On 05/12/2010 01:11, Peter Foelsche wrote:
> Anybody know in which cases the compiler optimizes away
> or does not optimize away the call to the copy-constructor
> when returning an object by value?
Whenever the object returned is a temporary or local variable, and the
result of the function is used to initialize a new object.
You can also benefit from this optimization in assignments by writing
your assignment operator as
type& operator(type other)
{
swap(other);
return *this;
}
since the return of the function is then used to directly initialize
'other' without any copy.
> I still think that something like this should be available in some
> library for people,
> which cannot write such a wrapper in a few minutes by themselves.
To make such a solution generic, you would have to be able to make a
good "smart reference" first, which isn't possible due to lack of
operator. overloading.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk