
Here is a generic exception_ptr implementation based on a registry of exception types. (http://joshuanapoli.com/exception/) The registry is
If boost::throw_exception is modified such that its postcondition is that the exception object it throws derives from boost::exception (I can't think of a reason not to), cloning can be implemented intrusively without a need for registration.
I would hope to save exceptions thrown from 3rd party libraries. An intrusive approach wouldn't work.
A run-time registry maintained by boost::throw_exception could cause problems in multi-threaded environments, as well as in the presence of DLLs (consider that if a DLL is unloaded, any std::type_info object obtained from it becomes invalid, so it can not be used safely as a key in the registry.)
DLL unload is an interesting problem.