From: Peter Dimov (pdimov_at_[hidden])
Date: 2008-08-27 16:00:41
> So IIUC, your intention was never to require RTTI in throw_exception, ...
The new throw_exception was not supposed to impose any new requirements and
it certainly was not supposed to break code that worked before. (It almost
succeeded at that.)
> and Emil didn't know that, so he violated your original intent
> unwittingly. What about the "weight" of the header and its
> dependencies? Your usual stance is to avoid such things.
Well, one upside is that exceptions thrown by boost::throw_exception now can
be used with boost::exception_ptr. This makes exception_ptr more useful and
requires zero effort from library authors who already throw all their
exceptions via boost::throw_exception.
The alternative way to provide such functionality would've been through a
separate throw replacement, part of Boost.Exception. This would indeed have
had zero impact on the rest of Boost, both in the negative and the positive
sense. (That is, it would have required every library author willing to
support exception_ptr to switch from boost::throw_exception to the new
It was impossible to predict in advance whether going with option A would be
worth the trouble. The only way to find out was to try.
I think that (for such a major change) the transition went fairly smoothly.
We still have the option to revert throw_exception if the "broad discussion"
that should have happened then but is happening now reaches this conclusion.
Either way, we'll still be ahead of where we were, both because we now have
BOOST_NO_RTTI and some awareness of its significance, and because the new
throw_exception caught a few bugs.