title: Exception handling and coercion
body: <pre><code>try
  {
      throw Derived();
  }
  catch (Base&amp;)
  {
      std::cout &lt;&lt; "subtyping\n";
  }
  
  try
  {
      throw "lol";
  }
  catch (std::string)
  {
      std::cout &lt;&lt; "coercion\n";
  }
  </code></pre>
  
  <p>Output:</p>
  
  <pre><code>subtyping
  terminate called after throwing an instance of 'char const*'
  </code></pre>
  
  <p>Why does exception handling play nice with subtyping, but not with coercion?</p>