Boost logo

Boost :

From: Daryle Walker (darylew_at_[hidden])
Date: 2007-07-17 16:20:41


Emil Dotchevski wrote:
> I guess pointing at the documentation of the proposed Boost Exception counts
> as generating buzz :)
>
> http://www.revergestudios.com/boost-exception/boost-exception.htm
>
> The source code with boost-build jamfiles and tests can be downloaded here:
>
> http://www.revergestudios.com/boost-exception/boost-exception.zip
>
> The source code is also available for online browsing:
>
> http://www.revergestudios.com/boost-exception/
[TRUNCATE]

Based on a quick read of the documentation:

1. What happens if a "boost::error_info" tag is used multiple times on
the same object? Is it an error (exception or assert?), do the
instances get combined like a multi-set, or do all instances besides the
first (or last) get ignored/dropped? Shouldn't this be documented?

2. Shouldn't all inheritance of "boost::exception," especially via
"enable_error_info," be of the virtual kind? Catching a given class
type only works if it has exactly one connection to the actual exception
object, which means that:

        a. The type is the final type of the object
        b. The type appears exactly once in the inheritance hierarchy
        c. All inheritance appearances of the type are virtual

If a class type uses another type as a base multiple times, and at least
one appearance is _not_ virtual, then catches with that base will be
skipped when that first type is thrown. Imagine what happens if
"enable_error_info" is applied multiple times during an exception
session and/or the original exception object used "boost::exception".

-- 
Daryle Walker
Mac, Internet, and Video Game Junkie
darylew AT hotmail DOT com

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk