"Justin M. Lewis" wrote: > And, it's not either pass in a whole object or pass in a pointer, you're > forgetting references. This new class takes in a reference, and stores > that. It doesn't do anything with pointers.
I didn't really forget references. IMHO, references are pointers that are implicitly dereferenced. At the machine level, they are typically treated the same (eg address is passed by value). > And, again, returning an object isn't always desirable, you could be copying > large objects for no reason. You may not call a copy constructor, but an = > operator is being used. My reply to this was to use smart pointers. But as Terje Slettebų pointed out (but I got distracted by work before sending out my reply), smart pointers don't resolve the problem that the object may still change from underneath. I still think there's no need for the proposed wrapper class since: void f( T& value_may_change_, T const& value_may_not_change_ ); is still an acceptible alternative. IOW, if users stick to using T& only to indicate values that may change, and T const& to indicate values that may not change, the wrapper class has no added value (forgive the unintended pun). 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