|
Boost : |
From: David Abrahams (dave_at_[hidden])
Date: 2004-04-12 11:26:52
"Robert Ramey" <ramey_at_[hidden]> writes:
> Hmmm - An interesting point I never considered. Push_back from the standard
> library has a strong guarantee so the problem should boil down to one of the
> constructors (copy or inplace) throwing. Try/catch block could be added but
> it could be a little expensive for large collections
I wouldn't worry about it until you've measured.
> and would be unnecessary in the most common case where inplace and
> copy constructors don't throw. I would like to use
> has_nothrow_constructor and has_trhow copy to address this but the
> language in the type_traits document suggests that this wouldn't be
> effective. Anyone is free to chime in here.
There are other reasons to avoid try/catch. See
http://www.boost.org/more/error_handling.html.
You should give stack_allocate an internal flag that says when to
destroy. Better yet, it seems, use a real variant or optional type as
has been suggested, and if the libraries don't have the support you
need, get their authors to add it.
-- Dave Abrahams Boost Consulting www.boost-consulting.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk