
Quoting Robert Ramey <ramey@rrsd.com>:
In the course of investigating some issues with the serialization library I had occasion to investigate boost/throw exception.hpp .
I understood the original purpose of this header was to provide support for throw for both compilers which implemented exceptions and those that didn't (e.g. some embedded systems environment).
Looking through this header - it seems that its function has changed completely. It now drags in a lot of machinery that no one who was using it before will need. It seems that the whole purpose of the header has been changed. I did review the documentation for boost exception and indeed, it now seems that boost/throw_exception does implement a different purpose.
Besides imposing the requirement for RTTI -
I'm not sure that is the right characterization. By default Boost works with standard C++ so if RTTI is turned off, then it is fair to require the BOOST_NO_TYPEID define. Changes such as this which potentially change "latent" bugs in client code/setup being turned into visible bugs have to be acceptable when changing Boost version, IMO.
I have no idea what else this might break.
It will break people using throw_exception but throwing things not derived from std::exception. This was an implicit requirement anyway, but users will have previously got away with it if they never actually exercised their code on a no-exceptions platform. I can't think of any other problems, though. What did you have in mind? IMO, the major issue with this change is the lack of documentation. Specifically, http://www.boost.org/doc/libs/1_36_0/libs/utility/throw_exception.html seems to refer to the 1.35 version of the code. I don't know if this a documentation bug or a documentation generation bug. Pete