d::exception const&amp; e) {}
   catch(...) { std::cout &lt;&lt; &quot;whoops!&quot; &lt;&lt; std::endl; }
}
</pre>

The program above prints <code>&quot;whoops&quot;</code> because the
C++ runtime can't resolve which <code>exception</code> instance to
match in the first catch clause.

      </li>

      <li>
        <b><i>Don't</i> embed a std::string object</b> or any other data
        member or base class whose copy constructor could throw an exception.
        That could lead directly to std::terminate