$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Noel Yap (Noel.Yap_at_[hidden])
Date: 2003-05-03 18:48:02
"Justin M. Lewis" wrote:
> 
> ----- Original Message -----
> From: "Noel Yap" <Noel.Yap_at_[hidden]>
> To: "Boost mailing list" <boost_at_[hidden]>
> Sent: Saturday, May 03, 2003 4:13 PM
> Subject: Re: [boost] Re: in/out parameters, codingstylesandmaintenance
> 
> > Noel Yap wrote:
> > >   std::auto_ptr< T > t( new T() );
> > >   f( boost::dumb_ptr< T >( t.get() ); // clearly an in/out parameter
> >
> > Or if you don't want to dynamically allocate t:
> >
> >   T t;
> >   f( boost::dumb_ptr< T >( &t ) ); // clearly an in/out parameter
> >
> >   static T t;
> >   f( boost::dumb_ptr< T >( &t ) ); // clearly an in/out parameter
> >
> >   boost::dumb_ptr< T > t = f(); // must be an out parameter whose memory
> > is managed by f()
> >
> >   T t = *f().get(); // must be an out parameter whose memory is managed
> > by f()
> >
> >   T &t = *f(); // must be an out parameter whose memory is managed by
> > f()
> >
> 
> I'm going to have to disagree with those being clearly in_out params.  What
> if the function just takes a pointer?  
If you wrote the function, why did you write it taking in a pointer if
the intent is not an in/out parameter?
>While we do tend to avoid using
> pointers these days, it's not possible to avoid them entirely, and there is
> a lot of code where pointers are being passed around.
In this situation, how is c_out and c_in_out going to help where
boost::dumb_ptr<> will not?
>  So, how do you
> differentiate the case where it's just a pointer being passed, and it's an
> in_out param?
I think you're saying, "I don't want to write functions taking in
pointers even for in/out parameters since there's such a large code base
taking in pointers for in parameters."  If so, for new functions what
about using:
  void f( boost::dumb_ptr< T > t ); // this is an in/out parameter
>  And, there's still the issue of, we LIKE to avoid using
> pointers whenever possible, which you're not doing, you're requiring the use
> of pointers in a case where they're easily avoidable.
Can you explain or elaborate what you mean by "using pointers", please?
Thanks,
Noel