|
Boost : |
From: Ralf W. Grosse-Kunstleve (rwgk_at_[hidden])
Date: 2006-03-09 14:24:50
--- Peter Dimov <pdimov_at_[hidden]> wrote:
> Ralf W. Grosse-Kunstleve wrote:
> > --- Dan Day <coolmandan_at_[hidden]> wrote:
> >
> >> On 3/8/06, Ralf W. Grosse-Kunstleve <rwgk_at_[hidden]> wrote:
> >>
> >>> Are there arguments for not adding release()?
> >>
> >> Check the FAQ on the scoped_ptr documentation.
> >
> > Policing arguments ("you shouldn't to this") are OK only if there is
> > an alternative. As I wrote before, there is no auto_array, therefore
> > the FAQ is just frustrating.
>
> I'm willing to add scoped_array::release if nobody objects and if you
> contribute a test. But keep in mind that 1.34 is closed for new features.
In the meantime I implemented auto_array, starting with the scoped_array
implementation:
http://phenix-online.org/cctbx_sources/scitbx/include/scitbx/auto_array.h
For the future, eventually the same file should show up here with version
history:
http://cvs.sourceforge.net/viewcvs.py/cctbx/scitbx/include/scitbx/
In contrast to the STLport implementation I use this approach to implement the
copy constructor (and similarly for the assignment operator):
class auto_array
{
mutable T* ptr;
auto_array(auto_array const& other)
{
ptr = const_cast<auto_array*>(&other)->release();
}
};
I know it works on a large number of platforms (several versions of EDG, VC,
g++). valgrind also didn't have any complaints. Is the approach also OK from a
theoretical viewpoint? Or is it necessary to adopt the more involved STLport
approach of introducing an auto_ptr_ref with a common base class for auto_ptr,
auto_ptr_ref?
I'd be happy to contribute my version back to boost. Then the FAQ wouldn't be
frustrating anymore and scoped_array could stay as is.
Cheers,
Ralf
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk