<p>This function returns a string value that is automatically composed from the string representations of all <spanclass="RenoLink"><ahref="error_info.html">error_info</a></span> objects stored in a 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.</p>
<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>
</ol></div>
<p>The first successfully bound function is used at the time <spanclass="RenoLink"><ahref="diagnostic_information.html">diagnostic_information</a></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"><ahref="diagnostic_information.html">diagnostic_information</a></span> function, as used in <i>libs/exception/example/example_io.cpp:</i></p>
<pre>libs\exception\example\example_io.cpp(83): Throw in function class boost::shared_ptr<struct _iobuf> __cdecl my_fopen(const char *,const char *)
Dynamic exception type: class boost::exception_detail::clone_impl<class fopen_error>
std::exception::what: example_io error
[struct tag_errno *] = 2, OS says "No such file or directory"