ue
      to Andrew Koenig.  Using virtual inheritance from your
      exception's base class(es) prevents ambiguity problems at the
      catch-site in case someone throws an exception derived from
      multiple bases which have a base class in common:

<pre>
#include &lt;iostream&gt;
struct my_exc1 : std::exception { char const* what() throw(); };
struct my_exc2 : std::exception { char const* what() throw(); };
struct your_exc3 : my_exc1, my_exc2 {};

int main()
{
   try { throw your_exc3(); }
   catch(st