
David Abrahams wrote:
The first example uses "error_info_value" without qualification. You need to test your examples.
In the examples in the documentation, only "exception" is qualified, to differentiate between boost::exception and std::exception. The examples are easier to read and understand without boost:: sprinkled all over. As for testing, I tried to compile the first example, the compiler choked on the "...." and I gave up. :)
Finally, a design note: I don't like the fact that I need a try/catch block in order to adorn the currently-unwinding exception with more information; it's just too heavy syntactically. I realize it would require TLS for thread-safety, but I'd like to see an option that uses the destructor of a local object to do the same work.
I realize that try...catch is a heavy thing to type. I also realize that the whole point of being exception-neutral is to not have to catch (there I go again, circular logic), however if you use a local object's destructor to do the work, you have to stuff the extra error_infos in that local object even if no exception is thrown. I'm not convinced that this overhead is insignificant. Emil Dotchevski