Boost logo

Boost :

From: Rob Stewart (stewart_at_[hidden])
Date: 2002-11-18 16:32:03

From: "Andrei Alexandrescu" <andrewalex_at_[hidden]>
> 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

Rob Stewart                           stewart_at_[hidden]
Software Engineer           
Susquehanna International Group, LLP  using std::disclaimer;

Boost list run by bdawes at, gregod at, cpdaniel at, john at