
"Robert Ramey" <ramey@rrsd.com> 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