"Justin M. Lewis" <[EMAIL PROTECTED]> writes:

> You're missing the point.  Personally I see the need for out and
> in/out params.  While some of you may not like them, I use them, as
> do others.  The question then becomes, when reading my code, would
> you rather see
>
> f(x,y,z);
> or
> f(out(x), in_out(y), z);
>
> Would you rather the outcome be obviously clear?  Or would you
> rather have to track down the source?  The same thing goes for if
> you were reading code that someone else wrote who used my library,
> which way would you prefer it?  Would you prefer to have to have a
> complet understanding of every single function call made in a
> program or would you prefer that as much information as possible is
> given at the point of invocation?  

I prefer some degree of abstraction and information hiding.

> You're welcome to go out of your way to write your code to never use
> out or in/out params, although I think that's impractical in a lot
> of cases, that doesn't mean that everyone else is going to do the
> same.

I didn't say "never", I do it only when it's idiomatic and hard to
misunderstand.

I'm reluctant to accept your idea for two reasons:

1. I think liberal use of out parameters is bad practice, and I have
   no interest in a library which makes bad practice more palatable.
   But if you're bound and determined to do it, by all means clarify
   by whatever means neccessary.

2. I'd hate to see a facility like that applied where mutable
   references are already idiomatic, e.g:

       out(cout) << 3;
       out(x) += 2;
       std::swap(in_out(x), in_out(y));

   Techniques designed to increase safety and clarity should usually
   come with simple and uniform rules for when they are applied.

-Dave

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com

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

Reply via email to