title: How do I get nicer diagnostic information from boost::exception?
body: <p>I'm throwing a <code>boost::exception</code> using </p>
  
  <pre><code>BOOST_THROW_EXCEPTION(trace_collector_error_t()
      &lt;&lt; boost::errinfo_api_function("ioctl")
      &lt;&lt; boost::errinfo_errno(errno)
      &lt;&lt; errinfo_trace_params_t(trace_params));
  </code></pre>
  
  <p>and after</p>
  
  <pre><code>std::cerr &lt;&lt; boost::diagnostic_information(e) &lt;&lt; std::endl;
  </code></pre>
  
  <p>I get</p>
  
  <pre><code>: Throw in function trace_config_t set_up_trace(size_t, size_t)
  Dynamic exception type: N5boost16exception_detail10clone_implI23trace_collector_error_tEE
  std::exception::what: std::exception
  [P23errinfo_trace_params_t_] = [ type: 14trace_params_t, size: 16, dump: 00 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 ]
  22, "Invalid argument"[PN5boost21errinfo_api_function_E] = ioctl
  </code></pre>
  
  <p>I have two questions:</p>
  
  <ul>
  <li>How do I get nicer type names?</li>
  <li>How do I get the errinfo_errno to be printed properly?</li>
  </ul>
  
  <p>I'm using GCC 4.6 and Boost 1.55.0.</p>