|
Boost : |
From: Ralf W. Grosse-Kunstleve (rwgk_at_[hidden])
Date: 2006-03-08 18:05:12
Does this patch for boost/scoped_array.hpp look useful?
< T * release() // never throws
< {
< T * result = ptr;
< ptr = 0;
< return result;
< }
<
It allows me to use boost::scoped_array almost like an auto_ptr:
int*
foo(size)
{
boost::scoped_array<int> result(new int[size]);
// do something to result
// if an exception is thrown result will be cleaned up
return result.release();
}
void
bar()
{
boost::scoped_array<int> foo_result(foo(1000));
// code is still exception safe
}
I wouldn't need this if
- we had std::auto_array (don't think it exists)
- std::vector<int>(size) wouldn't do the default construction of all elements
and I didn't care about having two pointers instead of just one (sometimes I
actually do care)
- boost::scoped_array::ptr was protected instead of private so that I could
inherit and add release()
Are there arguments for not adding release()?
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