Terje Slettebų wrote: > The part about RVO was really concerned with the out() scenario, not > in_out(). I'm not sure if passing a smart pointer buys you very much. In > this case, the smart pointer is const but the pointee is not, so the "const" > in the signature is really just masking what is going on.
You're right. I see your point. At first I thought that if there were an easy way to convert smart_ptr< T > to smart_ptr< T const > there'd be no problem. But then I realized this would bring about the expensive copy again. IMHO, the solution to this dilemna is to use the de facto standard way of using references like you said earlier: void f( T& value_may_change_, T const& value_may_not_change_ ); Noel -- NOTICE: If received in error, please destroy and notify sender. Sender does not waive confidentiality or privilege, and use is prohibited. _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost