From: "Andrei Alexandrescu" <[EMAIL PROTECTED]> > > I recently reached the conclusion that taking a parameter by const reference > just to make a copy of it inside the function is a "lie". The signature > says: "I don't need a value! A reference to a const is all I need!" and the > code says: "The first line of this function makes a copy!" There will be a > section in my upcoming article entitled "The Lying const". Taking const& T > as arguments in /any/ function when you actually *do* need a copy chokes the > compiler (and Zuto) and practically forbids them to make important > optimizations.
If there are lost optimizations, I might be persuaded to change my modus operandi, but I really dislike by value parameters. The reason is that I like to know the value given by the caller throughout the function. When I want to start with the caller's value and then modify it, I make a copy. When I read code that modifies the arguments, I find the code confusing as I can never know the value in that variable unless I inspect the entire function. While we all know functions should be kept relatively short, they aren't always, and long functions exacerbate the problem. IOW, by value arguments reduce code clarity. -- Rob Stewart [EMAIL PROTECTED] Software Engineer http://www.sig.com Susquehanna International Group, LLP using std::disclaimer; _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost