<p>A string value that contains varying amount of implementation-specific diagnostic information about the passed exception object:</p>
<div><ul><li>If E can be statically converted to boost::<spanclass="RenoLink"><ahref="exception.html">exception</a></span>, the returned value contains the string representations of all <spanclass="RenoLink"><ahref="error_info.html">error_info</a></span> objects stored in the boost::<spanclass="RenoLink"><ahref="exception.html">exception</a></span> through <spanclass="RenoLink"><ahref="exception_operator_shl.html">operator<<</a></span>, along with other diagnostic information relevant to the exception. If e can be dynamically converted to std::exception, the returned value also contains the what() string.</li>
<li>Otherwise, if E can be statically converted std::exception:<div><ul><li>if e can be dynamically converted to boost::exception, the returned value is the same as if E could be statically converted to boost::<spanclass="RenoLink"><ahref="exception.html">exception</a></span>;</li>
<li>otherwise the returned value contains the what() string.</li>
<p>The string representation of each <spanclass="RenoLink"><ahref="error_info.html">error_info</a></span> object is deduced by a function call that is bound at the time the <spanclass="RenoLink"><ahref="error_info.html">error_info</a></span><Tag,T> template is instantiated. The following overload resolutions are attempted in order:</p>
<div><ol><li>Unqualified call to to_string(x), where x is of type <spanclass="RenoLink"><ahref="error_info.html">error_info</a></span><Tag,T> (the return value is expected to be of type std::string.)</li>
<li>Unqualified call to to_string(x.<spanclass="RenoLink"><ahref="error_info_value.html">value</a></span>()) (the return value is expected to be of type std::string.)</li>
<li>Unqualified call to s << x.<spanclass="RenoLink"><ahref="error_info_value.html">value</a></span>(), where s is a std::ostringstream.</li>
<p>The first successfully bound function is used at the time <spanclass="RenoLink">diagnostic_information</span> is called; if all 3 overload resolutions are unsuccessful, the system is unable to convert the <spanclass="RenoLink"><ahref="error_info.html">error_info</a></span> object to string, and <i>an unspecified stub string value is used without issuing a compile error.</i></p>
<p>this is a possible output from the <spanclass="RenoLink">diagnostic_information</span> function, as used in <i>libs/exception/example/example_io.cpp:</i></p>