Boost logo

Boost :

From: Victor A. Wagner, Jr. (vawjr_at_[hidden])
Date: 2002-11-23 22:19:57


At Monday 2002/11/18 14:46, you wrote:
>At 01:32 PM 11/18/2002, Rob Stewart wrote:
> >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
> >clarity.
>
>And I really dislike by-reference parameters. I like functions
>to be free of side effects, and especially of non-obvious side
>effects.

a non-const reference parameter isn't exactly non-obvious

>_______________________________________________
>Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Victor A. Wagner Jr. http://rudbek.com
The five most dangerous words in the English language:
               "There oughta be a law"


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk