On Sat, 28 May 2011 21:50:44 -0700, Mostafa
On Sat, 28 May 2011 21:01:56 -0700, Emil Dotchevski
wrote: On Sat, May 28, 2011 at 8:37 PM, Mostafa
wrote: All of the Boost Exception functionality works only if the exceptions derive from boost::exception. Your only two choices are to do it explicitly or to call boost::throw_exception which does it for you.
It seems that some functionality doesn't, namely boost::enable_current_exception, and I was hoping to leverage such functionality to achieve my aforementioned goal.
boost::enable_current_exception enables the boost::current_exception/boost::exception_ptr support by returning an object that derives from boost::exception *and* the type of the passed object.
Therefore:
throw boost::enable_current_exception(my_exception());
satisfies the requirement for deriving from boost::exception without requiring my_exception to derive from boost::exception.
If that is so, then that fact is omitted from the documentation for boost::enable_current_exception, please see:
http://www.boost.org/doc/libs/1_46_1/libs/exception/doc/enable_current_excep...
and the Note at the bottom of the said url seems to imply otherwise, by stating "it is preferable to call boost::throw_exception. This is guaranteed to throw an exception that derives from boost::exception". Can you please add this fact to the above documentation?
The documentation for boost::throw_exception is more clear that it derives from the user defined type and boost::exception, see http://tinyurl.com/3ks92g8, where it mentions "... boost::throw_exception(e) is equivalent to throw boost::enable_current_exception(boost::enable_error_info(e)) ...", and the documentation for boost::enable_error_info (http://tinyurl.com/3zo3yu7) makes it explicit that "... the returned object is of an unspecified type that derives publicly from both T and boost::exception.". Hence, the reason for my confusion on this matter.
Thanks,
Mostafa
Correction: s/"Can you please add this fact to the above documentation?"/"Can you please add what you just mentioned to the above documentation?" Thanks, Mostafa