Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r53038 - in trunk: boost boost/exception boost/exception/detail libs/exception/doc libs/exception/doc/source libs/exception/test
From: emil_at_[hidden]
Date: 2009-05-15 18:34:32


Author: emildotchevski
Date: 2009-05-15 18:34:30 EDT (Fri, 15 May 2009)
New Revision: 53038
URL: http://svn.boost.org/trac/boost/changeset/53038

Log:
support for exception_ptr and nesting in boost::diagnostic_information
documentation update
Added:
   trunk/boost/exception/detail/exception_ptr_base.hpp (contents, props changed)
Text files modified:
   trunk/boost/exception/diagnostic_information.hpp | 102
   trunk/boost/exception/info.hpp | 2
   trunk/boost/exception_ptr.hpp | 47
   trunk/libs/exception/doc/error_info.html | 1
   trunk/libs/exception/doc/exception.html | 1
   trunk/libs/exception/doc/exception_ptr.html | 2
   trunk/libs/exception/doc/source/boost-exception.reno | 3963 ++++++++++++++++++++-------------------
   trunk/libs/exception/test/cloning_test.cpp | 38
   8 files changed, 2136 insertions(+), 2020 deletions(-)

Added: trunk/boost/exception/detail/exception_ptr_base.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/exception/detail/exception_ptr_base.hpp 2009-05-15 18:34:30 EDT (Fri, 15 May 2009)
@@ -0,0 +1,26 @@
+//Copyright (c) 2006-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_DC4208C6417811DEBF11E1EC55D89593
+#define UUID_DC4208C6417811DEBF11E1EC55D89593
+
+namespace
+boost
+ {
+ namespace
+ exception_detail
+ {
+ class
+ exception_ptr_base
+ {
+ public:
+
+ virtual void _rethrow() const=0;
+ virtual bool _empty() const=0;
+ };
+ }
+ }
+
+#endif

Modified: trunk/boost/exception/diagnostic_information.hpp
==============================================================================
--- trunk/boost/exception/diagnostic_information.hpp (original)
+++ trunk/boost/exception/diagnostic_information.hpp 2009-05-15 18:34:30 EDT (Fri, 15 May 2009)
@@ -8,6 +8,7 @@
 
 #include <boost/config.hpp>
 #include <boost/exception/get_error_info.hpp>
+#include <boost/exception/detail/exception_ptr_base.hpp>
 #include <boost/utility/enable_if.hpp>
 #include <exception>
 #include <sstream>
@@ -41,16 +42,6 @@
             enum e { value = !enable_boost_exception_overload<T>::value && sizeof(check((T*)0))==sizeof(yes) };
             };
 
-#ifndef BOOST_NO_RTTI
- template <class T>
- inline
- std::string
- dynamic_exception_type( T const & x )
- {
- return std::string("Dynamic exception type: ") + BOOST_EXCEPTION_DYNAMIC_TYPEID(x).name();
- }
-#endif
-
         inline
         char const *
         get_diagnostic_information( exception const & x )
@@ -72,43 +63,41 @@
 
         inline
         std::string
- boost_diagnostic_information( exception const & x )
+ diagnostic_information_impl( boost::exception const * be, std::exception const * se )
             {
+ BOOST_ASSERT(be||se);
+#ifndef BOOST_NO_RTTI
+ if( !se )
+ se = dynamic_cast<std::exception const *>(be);
+ if( !be )
+ be = dynamic_cast<boost::exception const *>(se);
+#endif
             std::ostringstream tmp;
- if( char const * const * f=get_error_info<throw_file>(x) )
+ if( be )
                 {
- tmp << *f;
- if( int const * l=get_error_info<throw_line>(x) )
- tmp << '(' << *l << "): ";
+ if( char const * const * f=get_error_info<throw_file>(*be) )
+ {
+ tmp << *f;
+ if( int const * l=get_error_info<throw_line>(*be) )
+ tmp << '(' << *l << "): ";
+ }
+ tmp << "Throw in function ";
+ if( char const * const * fn=get_error_info<throw_function>(*be) )
+ tmp << *fn;
+ else
+ tmp << "(unknown)";
+ tmp << '\n';
                 }
- tmp << "Throw in function ";
- if( char const * const * fn=get_error_info<throw_function>(x) )
- tmp << *fn;
- else
- tmp << "(unknown)";
- tmp << std::endl;
-#ifndef BOOST_NO_RTTI
- tmp << dynamic_exception_type(x) << std::endl;
- if( std::exception const * e=dynamic_cast<std::exception const *>(&x) )
- tmp << "std::exception::what: " << e->what() << std::endl;
-#endif
- if( char const * s=exception_detail::get_diagnostic_information(x) )
- if( *s )
- tmp << s;
- return tmp.str();
- }
-
- inline
- std::string
- std_diagnostic_information( std::exception const & x )
- {
- std::ostringstream tmp;
 #ifndef BOOST_NO_RTTI
- if( exception const * e=dynamic_cast<exception const *>(&x) )
- return boost_diagnostic_information(*e);
- tmp << dynamic_exception_type(x) << std::endl;
+ tmp << std::string("Dynamic exception type: ") <<
+ (be?BOOST_EXCEPTION_DYNAMIC_TYPEID(*be):BOOST_EXCEPTION_DYNAMIC_TYPEID(*se)).name() << '\n';
 #endif
- tmp << "std::exception::what: " << x.what() << std::endl;
+ if( se )
+ tmp << "std::exception::what: " << se->what() << '\n';
+ if( be )
+ if( char const * s=exception_detail::get_diagnostic_information(*be) )
+ if( *s )
+ tmp << s;
             return tmp.str();
             }
         }
@@ -118,7 +107,7 @@
     typename enable_if<exception_detail::enable_boost_exception_overload<T>,std::string>::type
     diagnostic_information( T const & e )
         {
- return exception_detail::boost_diagnostic_information(e);
+ return exception_detail::diagnostic_information_impl(&e,0);
         }
 
     template <class T>
@@ -126,7 +115,7 @@
     typename enable_if<exception_detail::enable_std_exception_overload<T>,std::string>::type
     diagnostic_information( T const & e )
         {
- return exception_detail::std_diagnostic_information(e);
+ return exception_detail::diagnostic_information_impl(0,&e);
         }
     }
 
@@ -139,14 +128,31 @@
     std::string
     current_exception_diagnostic_information()
         {
- if( boost::exception const * e=current_exception_cast<boost::exception const>() )
- return diagnostic_information(*e);
- else if( std::exception const * e=current_exception_cast<std::exception const>() )
- return diagnostic_information(*e);
+ boost::exception const * be=current_exception_cast<boost::exception const>();
+ std::exception const * se=current_exception_cast<std::exception const>();
+ if( be || se )
+ return exception_detail::diagnostic_information_impl(be,se);
         else
             return "No diagnostic information available.";
         }
- }
+
+ inline
+ std::string
+ diagnostic_information( exception_detail::exception_ptr_base const & p )
+ {
+ if( !p._empty() )
+ try
+ {
+ p._rethrow();
+ }
+ catch(
+ ... )
+ {
+ return current_exception_diagnostic_information();
+ }
+ return "<empty>";
+ }
+ }
 #endif
 
 #endif

Modified: trunk/boost/exception/info.hpp
==============================================================================
--- trunk/boost/exception/info.hpp (original)
+++ trunk/boost/exception/info.hpp 2009-05-15 18:34:30 EDT (Fri, 15 May 2009)
@@ -106,7 +106,7 @@
                     for( error_info_map::const_iterator i=info_.begin(),end=info_.end(); i!=end; ++i )
                         {
                         shared_ptr<error_info_base const> const & x = i->second;
- tmp << '[' << x->tag_typeid_name() << "] = " << x->value_as_string() << std::endl;
+ tmp << '[' << x->tag_typeid_name() << "] = " << x->value_as_string() << '\n';
                         }
                     tmp.str().swap(diagnostic_info_str_);
                     }

Modified: trunk/boost/exception_ptr.hpp
==============================================================================
--- trunk/boost/exception_ptr.hpp (original)
+++ trunk/boost/exception_ptr.hpp 2009-05-15 18:34:30 EDT (Fri, 15 May 2009)
@@ -12,6 +12,7 @@
 #endif
 #include <boost/exception/exception.hpp>
 #include <boost/exception/info.hpp>
+#include <boost/exception/diagnostic_information.hpp>
 #include <boost/exception/detail/type_info.hpp>
 #include <boost/shared_ptr.hpp>
 #include <stdexcept>
@@ -37,7 +38,8 @@
     void rethrow_exception( exception_ptr const & );
 
     class
- exception_ptr
+ exception_ptr:
+ public exception_detail::exception_ptr_base
         {
         typedef bool exception_ptr::*unspecified_bool_type;
         friend exception_ptr current_exception();
@@ -65,6 +67,22 @@
             BOOST_ASSERT(c);
             }
 
+ void
+ _rethrow() const
+ {
+ BOOST_ASSERT(*this);
+ if( bad_alloc_ )
+ throw enable_current_exception(std::bad_alloc());
+ else
+ c_->rethrow();
+ }
+
+ bool
+ _empty() const
+ {
+ return !bad_alloc_ && !c_;
+ }
+
         public:
 
         exception_ptr():
@@ -74,7 +92,7 @@
 
         operator unspecified_bool_type() const
             {
- return (bad_alloc_ || c_) ? &exception_ptr::bad_alloc_ : 0;
+ return _empty() ? 0 : &exception_ptr::bad_alloc_;
             }
 
         friend
@@ -417,11 +435,26 @@
     void
     rethrow_exception( exception_ptr const & p )
         {
- BOOST_ASSERT(p);
- if( p.bad_alloc_ )
- throw enable_current_exception(std::bad_alloc());
- else
- p.c_->rethrow();
+ p._rethrow();
+ }
+
+ inline
+ std::string
+ to_string( exception_ptr const & p )
+ {
+ std::string s='\n'+diagnostic_information(p);
+ std::string padding(" ");
+ std::string r;
+ bool f=false;
+ for( std::string::const_iterator i=s.begin(),e=s.end(); i!=e; ++i )
+ {
+ if( f )
+ r+=padding;
+ char c=*i;
+ r+=c;
+ f=(c=='\n');
+ }
+ return r;
         }
     }
 

Modified: trunk/libs/exception/doc/error_info.html
==============================================================================
--- trunk/libs/exception/doc/error_info.html (original)
+++ trunk/libs/exception/doc/error_info.html 2009-05-15 18:34:30 EDT (Fri, 15 May 2009)
@@ -71,6 +71,7 @@
 </a><a href="error_info_value_type.html">error_info::value_type<br/>
 </a><a href="exception.html">exception<br/>
 </a><a href="exception_operator_shl.html">exception/operator&lt;&lt;<br/>
+</a><a href="exception_ptr.html">exception_ptr<br/>
 </a><a href="frequently_asked_questions.html">Frequently Asked Questions<br/>
 </a><a href="get_error_info.html">get_error_info<br/>
 </a><a href="tutorial_enable_error_info.html">Integrating Boost Exception in Existing Exception Class Hierarchies<br/>

Modified: trunk/libs/exception/doc/exception.html
==============================================================================
--- trunk/libs/exception/doc/exception.html (original)
+++ trunk/libs/exception/doc/exception.html 2009-05-15 18:34:30 EDT (Fri, 15 May 2009)
@@ -55,6 +55,7 @@
 </a><a href="exception_operator_shl.html">exception/operator&lt;&lt;<br/>
 </a><a href="exception_constructors.html">exception::exception<br/>
 </a><a href="exception_destructor.html">exception::~exception<br/>
+</a><a href="exception_ptr.html">exception_ptr<br/>
 </a><a href="frequently_asked_questions.html">Frequently Asked Questions<br/>
 </a><a href="get_error_info.html">get_error_info<br/>
 </a><a href="tutorial_enable_error_info.html">Integrating Boost Exception in Existing Exception Class Hierarchies<br/>

Modified: trunk/libs/exception/doc/exception_ptr.html
==============================================================================
--- trunk/libs/exception/doc/exception_ptr.html (original)
+++ trunk/libs/exception/doc/exception_ptr.html 2009-05-15 18:34:30 EDT (Fri, 15 May 2009)
@@ -36,6 +36,8 @@
 <li> It is illegal for multiple threads to modify the same <span class="RenoLink">exception_ptr</span> object concurrently.</li>
 <li> While calling <span class="RenoLink">current_exception</span> makes a copy of the current exception object, it is still possible for the two copies to share internal state. Therefore, in general it is not safe to call <span class="RenoLink">rethrow_exception</span> concurrently to throw the same exception object into multiple threads.</li>
 </ul></div>
+<h4>Nesting of exceptions</h4>
+<p>An <span class="RenoLink">exception_ptr</span> can be added as <span class="RenoLink">error_info</span> to any boost::<span class="RenoLink">exception</span>. This is a convenient way to nest exceptions. There is no limit on the depth of the nesting, however cyclic references result in undefined behavior.</p>
 </div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
 <h3>See Also:</h3>
 <div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>

Modified: trunk/libs/exception/doc/source/boost-exception.reno
==============================================================================
--- trunk/libs/exception/doc/source/boost-exception.reno (original)
+++ trunk/libs/exception/doc/source/boost-exception.reno 2009-05-15 18:34:30 EDT (Fri, 15 May 2009)
@@ -54,185 +54,6 @@
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
                                                                                                                                                         <size>1</size>
- <strong>F647827E95C64B626A8E3751AD4E4D21237DD17482EEA6DB93A16A2C6AC79E87</strong>
- <weak>527078204</weak>
- <size>446</size>
- <position>227</position>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>0</empty>
- <string>../../../../boost/exception.hpp</string>
- <type>0</type>
- <base>0</base>
- </path>
- </file>
- </hook>
- <title>
- <string>boost/exception.hpp</string>
- </title>
- <file_name>
- <string></string>
- </file_name>
- </object>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:include include:)&#10;(:auto also:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>6</id>
- <type>
- <string>reno_context</string>
- </type>
- <object>
- <hook>
- <hook>
- <stream_hook_path>
- <container>
- <size>3</size>
- <strong>126BB1D8971585CBE7D78EF3C12259D72FD5E973A84626AA9FC3234220A11CAB</strong>
- <weak>3471702891</weak>
- <size>969</size>
- <position>344</position>
- <strong>A7FD310E1340E103081DA2A7899DA0E213C696C84D52C17ADA09F6942EE97D47</strong>
- <weak>2978648279</weak>
- <size>530</size>
- <position>433</position>
- <strong>38B566F2C6678B8724D18086A6F76E077DC2ADC1BB69A4B83BF0A2C3B7D31B50</strong>
- <weak>2218658069</weak>
- <size>31</size>
- <position>143</position>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>0</empty>
- <string>../../../../boost/exception/detail/error_info_impl.hpp</string>
- <type>0</type>
- <base>0</base>
- </path>
- </file>
- </hook>
- <title>
- <string>error_info::value_type</string>
- </title>
- <file_name>
- <string></string>
- </file_name>
- </object>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:include include:)&#10;(:auto also:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>7</id>
- <type>
- <string>reno_context</string>
- </type>
- <object>
- <hook>
- <hook>
- <stream_hook_path>
- <container>
- <size>0</size>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>1</empty>
- </path>
- </file>
- </hook>
- <title>
- <string>boost/exception/enable_error_info.hpp</string>
- </title>
- <file_name>
- <string></string>
- </file_name>
- </object>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:include include:)&#10;(:auto also:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>8</id>
- <type>
- <string>reno_context</string>
- </type>
- <object>
- <hook>
- <hook>
- <stream_hook_path>
- <container>
- <size>1</size>
- <strong>9E8DCE3BCF462A3A332DA70F61E46FA5C2AB791B95E33D3F2AF1307F53C84B1C</strong>
- <weak>1960675522</weak>
- <size>6483</size>
- <position>591</position>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>0</empty>
- <string>../../example/example_io.cpp</string>
- <type>0</type>
- <base>0</base>
- </path>
- </file>
- </hook>
- <title>
- <string>diagnostic_information example</string>
- </title>
- <file_name>
- <string></string>
- </file_name>
- </object>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>9</id>
- <type>
- <string>reno_context</string>
- </type>
- <object>
- <hook>
- <hook>
- <stream_hook_path>
- <container>
- <size>1</size>
                                                                                                                                                         <strong>BEFF039468E0E9A3719E5CB51DA9710812D146B587BAF573D1670908BB97C0CA</strong>
                                                                                                                                                         <weak>35548578</weak>
                                                                                                                                                         <size>1983</size>
@@ -268,7 +89,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>10</id>
+ <id>6</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
                                                                                                                 </type>
@@ -306,7 +127,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>11</id>
+ <id>7</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
                                                                                                                 </type>
@@ -355,7 +176,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>12</id>
+ <id>8</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
                                                                                                                 </type>
@@ -393,7 +214,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>13</id>
+ <id>9</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
                                                                                                                 </type>
@@ -438,7 +259,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>14</id>
+ <id>10</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
                                                                                                                 </type>
@@ -476,7 +297,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>15</id>
+ <id>11</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
                                                                                                                 </type>
@@ -486,9 +307,9 @@
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
                                                                                                                                                         <size>1</size>
- <strong>A449DE2B3A2CDAE9DD932C06D224B3E07C95EBACBB4EA5890CA4CCF2DC74A693</strong>
- <weak>1718307056</weak>
- <size>4118</size>
+ <strong>641BB230CEBF638811480BE0E3A96ABCB7CC9CC7E1C1A9C51FBAB296FFB6B7B1</strong>
+ <weak>4248389286</weak>
+ <size>4113</size>
                                                                                                                                                         <position>323</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
@@ -521,7 +342,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>16</id>
+ <id>12</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
                                                                                                                 </type>
@@ -531,9 +352,9 @@
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
                                                                                                                                                         <size>1</size>
- <strong>ACBC114551B7A04441A0452AB97D25519D6D2AE97DA6C5DDBC2E7C4B9002F847</strong>
- <weak>4238517159</weak>
- <size>11368</size>
+ <strong>21E8093D2AF6946EAE135823066EF38B9DC8870432B44C81E585FF63A72F9903</strong>
+ <weak>3352783584</weak>
+ <size>12170</size>
                                                                                                                                                         <position>323</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
@@ -566,7 +387,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>17</id>
+ <id>13</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
                                                                                                                 </type>
@@ -611,7 +432,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>18</id>
+ <id>14</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
                                                                                                                 </type>
@@ -649,7 +470,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>19</id>
+ <id>15</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
                                                                                                                 </type>
@@ -685,7 +506,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-12</id>
+ <id>-8</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -694,7 +515,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>20</id>
+ <id>16</id>
                                                                                                                         <type>
                                                                                                                                 <string>reno_context</string>
                                                                                                                         </type>
@@ -735,7 +556,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>21</id>
+ <id>17</id>
                                                                                                                         <type>
                                                                                                                                 <string>reno_context</string>
                                                                                                                         </type>
@@ -771,7 +592,33 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>22</id>
+ <id>-16</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-17</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>18</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
                                                                                                                 </type>
@@ -781,10 +628,10 @@
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
                                                                                                                                                         <size>2</size>
- <strong>E73A20FFCA320C2129509D6916B42B4619582DCB5E6B204802AFA5DB176267EA</strong>
- <weak>1330392285</weak>
- <size>11023</size>
- <position>668</position>
+ <strong>CEB9022E39DA32E612158FF553D383E13D300D1202CEB754E28B716040EFC414</strong>
+ <weak>1114955626</weak>
+ <size>11770</size>
+ <position>723</position>
                                                                                                                                                         <strong>1516D0B7E11CBEB60CE4222565ACCAFF2E9857A8A505C1C26E2AE90087250581</strong>
                                                                                                                                                         <weak>3624753243</weak>
                                                                                                                                                         <size>279</size>
@@ -820,7 +667,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>23</id>
+ <id>19</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
                                                                                                                 </type>
@@ -858,20 +705,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-20</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:include include:)&#10;(:auto also:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>24</id>
+ <id>20</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
                                                                                                                 </type>
@@ -909,7 +743,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>25</id>
+ <id>21</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
                                                                                                                 </type>
@@ -952,7 +786,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>26</id>
+ <id>22</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
                                                                                                                 </type>
@@ -961,16 +795,195 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
- <size>2</size>
- <strong>55F1164770FD778354E151EF65A3E830DA20F325F7ED20A95130A4B83FC801BF</strong>
- <weak>1282550303</weak>
- <size>9192</size>
- <position>323</position>
- <strong>F3FB15CD82336271C6E875BC620385322777D16F0B7C233300783CE35710CCBF</strong>
- <weak>3292878997</weak>
- <size>282</size>
- <position>7305</position>
- </container>
+ <size>1</size>
+ <strong>F647827E95C64B626A8E3751AD4E4D21237DD17482EEA6DB93A16A2C6AC79E87</strong>
+ <weak>527078204</weak>
+ <size>446</size>
+ <position>227</position>
+ </container>
+ </stream_hook_path>
+ </hook>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/exception.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ </hook>
+ <title>
+ <string>boost/exception.hpp</string>
+ </title>
+ <file_name>
+ <string></string>
+ </file_name>
+ </object>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>23</id>
+ <type>
+ <string>reno_context</string>
+ </type>
+ <object>
+ <hook>
+ <hook>
+ <stream_hook_path>
+ <container>
+ <size>3</size>
+ <strong>126BB1D8971585CBE7D78EF3C12259D72FD5E973A84626AA9FC3234220A11CAB</strong>
+ <weak>3471702891</weak>
+ <size>969</size>
+ <position>344</position>
+ <strong>A7FD310E1340E103081DA2A7899DA0E213C696C84D52C17ADA09F6942EE97D47</strong>
+ <weak>2978648279</weak>
+ <size>530</size>
+ <position>433</position>
+ <strong>38B566F2C6678B8724D18086A6F76E077DC2ADC1BB69A4B83BF0A2C3B7D31B50</strong>
+ <weak>2218658069</weak>
+ <size>31</size>
+ <position>143</position>
+ </container>
+ </stream_hook_path>
+ </hook>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/exception/detail/error_info_impl.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ </hook>
+ <title>
+ <string>error_info::value_type</string>
+ </title>
+ <file_name>
+ <string></string>
+ </file_name>
+ </object>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>24</id>
+ <type>
+ <string>reno_context</string>
+ </type>
+ <object>
+ <hook>
+ <hook>
+ <stream_hook_path>
+ <container>
+ <size>0</size>
+ </container>
+ </stream_hook_path>
+ </hook>
+ <file>
+ <path>
+ <empty>1</empty>
+ </path>
+ </file>
+ </hook>
+ <title>
+ <string>boost/exception/enable_error_info.hpp</string>
+ </title>
+ <file_name>
+ <string></string>
+ </file_name>
+ </object>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>25</id>
+ <type>
+ <string>reno_context</string>
+ </type>
+ <object>
+ <hook>
+ <hook>
+ <stream_hook_path>
+ <container>
+ <size>1</size>
+ <strong>9E8DCE3BCF462A3A332DA70F61E46FA5C2AB791B95E33D3F2AF1307F53C84B1C</strong>
+ <weak>1960675522</weak>
+ <size>6483</size>
+ <position>591</position>
+ </container>
+ </stream_hook_path>
+ </hook>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../example/example_io.cpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ </hook>
+ <title>
+ <string>diagnostic_information example</string>
+ </title>
+ <file_name>
+ <string></string>
+ </file_name>
+ </object>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>26</id>
+ <type>
+ <string>reno_context</string>
+ </type>
+ <object>
+ <hook>
+ <hook>
+ <stream_hook_path>
+ <container>
+ <size>2</size>
+ <strong>55F1164770FD778354E151EF65A3E830DA20F325F7ED20A95130A4B83FC801BF</strong>
+ <weak>1282550303</weak>
+ <size>9192</size>
+ <position>323</position>
+ <strong>F3FB15CD82336271C6E875BC620385322777D16F0B7C233300783CE35710CCBF</strong>
+ <weak>3292878997</weak>
+ <size>282</size>
+ <position>7305</position>
+ </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
@@ -1054,14 +1067,14 @@
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
                                                                                                                                                         <size>2</size>
- <strong>E73A20FFCA320C2129509D6916B42B4619582DCB5E6B204802AFA5DB176267EA</strong>
- <weak>1330392285</weak>
- <size>11023</size>
- <position>668</position>
+ <strong>CEB9022E39DA32E612158FF553D383E13D300D1202CEB754E28B716040EFC414</strong>
+ <weak>1114955626</weak>
+ <size>11770</size>
+ <position>723</position>
                                                                                                                                                         <strong>6B3B617AC518A2177BDB89656E726B4E4D79577E289130493A61BAE24FB64838</strong>
                                                                                                                                                         <weak>3173127726</weak>
                                                                                                                                                         <size>1101</size>
- <position>1777</position>
+ <position>2184</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
@@ -1148,13 +1161,13 @@
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
                                                                                                                                                         <size>2</size>
- <strong>7BD35FAECA8BDD2E78E08EB02CF7F36163AE21D6859C73267AC53A05E5797909</strong>
- <weak>2464409114</weak>
- <size>3681</size>
- <position>502</position>
- <strong>DBE4A27FCB9297C314B3F52A460B55A5540B2A3F173D48C8CD042388D19253E2</strong>
- <weak>263970566</weak>
- <size>3656</size>
+ <strong>02F77B8305279514F37A75FA6454AE750E04E7AA7934D395EFB52BCC7642965E</strong>
+ <weak>430535365</weak>
+ <size>3379</size>
+ <position>560</position>
+ <strong>D08B74734CDA5115D9E47783E2994C2836BE241FB25E589BB4C67F2596727C03</strong>
+ <weak>24341149</weak>
+ <size>3347</size>
                                                                                                                                                         <position>26</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
@@ -1295,13 +1308,13 @@
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
                                                                                                                                                         <size>2</size>
- <strong>E73A20FFCA320C2129509D6916B42B4619582DCB5E6B204802AFA5DB176267EA</strong>
- <weak>1330392285</weak>
- <size>11023</size>
- <position>668</position>
- <strong>F86EB07D04CD0D0645080D1121DA899746D0C45137E17E1D9BE605E75396F047</strong>
- <weak>1983537541</weak>
- <size>1346</size>
+ <strong>CEB9022E39DA32E612158FF553D383E13D300D1202CEB754E28B716040EFC414</strong>
+ <weak>1114955626</weak>
+ <size>11770</size>
+ <position>723</position>
+ <strong>AF894656AC8CED6190EEEE08B051DBF2106A393E313BB5BB1C17D4808EFED761</strong>
+ <weak>1496105832</weak>
+ <size>1753</size>
                                                                                                                                                         <position>429</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
@@ -1344,14 +1357,14 @@
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
                                                                                                                                                         <size>2</size>
- <strong>E73A20FFCA320C2129509D6916B42B4619582DCB5E6B204802AFA5DB176267EA</strong>
- <weak>1330392285</weak>
- <size>11023</size>
- <position>668</position>
+ <strong>CEB9022E39DA32E612158FF553D383E13D300D1202CEB754E28B716040EFC414</strong>
+ <weak>1114955626</weak>
+ <size>11770</size>
+ <position>723</position>
                                                                                                                                                         <strong>E23085202D084CBB50F289988A6A592F06D923B77D0AB25D7A98A7188DF5BE3B</strong>
                                                                                                                                                         <weak>1414247481</weak>
                                                                                                                                                         <size>766</size>
- <position>9687</position>
+ <position>10094</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
@@ -1583,14 +1596,14 @@
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
                                                                                                                                                         <size>2</size>
- <strong>E73A20FFCA320C2129509D6916B42B4619582DCB5E6B204802AFA5DB176267EA</strong>
- <weak>1330392285</weak>
- <size>11023</size>
- <position>668</position>
- <strong>0E9DF8366080712A816BE91ABCEF1E2044145B63D75B0B995B537900F378189E</strong>
- <weak>1069696031</weak>
- <size>255</size>
- <position>10762</position>
+ <strong>CEB9022E39DA32E612158FF553D383E13D300D1202CEB754E28B716040EFC414</strong>
+ <weak>1114955626</weak>
+ <size>11770</size>
+ <position>723</position>
+ <strong>B20A3D4631F3B2415EED1888B65FA33D7AED20F86BE196159D9297AAED115787</strong>
+ <weak>3293519666</weak>
+ <size>117</size>
+ <position>11169</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
@@ -1713,9 +1726,9 @@
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
                                                                                                                                                         <size>2</size>
- <strong>1D3204D3ADDAB7AA716BEA1489EA852A9D6B5C110243364F6931FEF1CC2E5F88</strong>
- <weak>422052608</weak>
- <size>3923</size>
+ <strong>AED5E79246B32BDF0E5C6CD8BDDC3370FD0BA1EFE3D4CE76C4A6D36A123F2E20</strong>
+ <weak>228982966</weak>
+ <size>3918</size>
                                                                                                                                                         <position>518</position>
                                                                                                                                                         <strong>6E325144EF4F41FA3A225EB30729101382C4E99B3D6160E307311E4B4E641010</strong>
                                                                                                                                                         <weak>1097215175</weak>
@@ -2111,14 +2124,14 @@
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
                                                                                                                                                         <size>2</size>
- <strong>E73A20FFCA320C2129509D6916B42B4619582DCB5E6B204802AFA5DB176267EA</strong>
- <weak>1330392285</weak>
- <size>11023</size>
- <position>668</position>
+ <strong>CEB9022E39DA32E612158FF553D383E13D300D1202CEB754E28B716040EFC414</strong>
+ <weak>1114955626</weak>
+ <size>11770</size>
+ <position>723</position>
                                                                                                                                                         <strong>0066D4E6E6B189906E6DE04F08509F3737511701A1B1355B37511EC18E8371F4</strong>
                                                                                                                                                         <weak>2078296250</weak>
                                                                                                                                                         <size>305</size>
- <position>10455</position>
+ <position>10862</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
@@ -2335,19 +2348,6 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-21</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:include include:)&#10;(:auto also:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
                                                                                                                 <id>56</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
@@ -2358,14 +2358,14 @@
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
                                                                                                                                                         <size>2</size>
- <strong>1D3204D3ADDAB7AA716BEA1489EA852A9D6B5C110243364F6931FEF1CC2E5F88</strong>
- <weak>422052608</weak>
- <size>3923</size>
+ <strong>AED5E79246B32BDF0E5C6CD8BDDC3370FD0BA1EFE3D4CE76C4A6D36A123F2E20</strong>
+ <weak>228982966</weak>
+ <size>3918</size>
                                                                                                                                                         <position>518</position>
                                                                                                                                                         <strong>D31BCE814DF5B8B718E7EB67A194AD08EF716A26D422E436596ABA1F145007D8</strong>
                                                                                                                                                         <weak>4055211476</weak>
                                                                                                                                                         <size>525</size>
- <position>3392</position>
+ <position>3387</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
@@ -2456,9 +2456,9 @@
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
                                                                                                                                                         <size>1</size>
- <strong>B26AA4D68CD040C376C32D7D469C926EC02DB8F76A3DA3275D14CCABCA02902C</strong>
- <weak>1262147856</weak>
- <size>4435</size>
+ <strong>95AD55ACCB1C17C1DBA4C309BDFCBD4B66E52CD9A2F54FDAD2D642A00342D001</strong>
+ <weak>3194412598</weak>
+ <size>4599</size>
                                                                                                                                                         <position>323</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
@@ -2591,11 +2591,15 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
- <size>1</size>
- <strong>683D57B85DAEB8F69927D079F2038E0C64853D2B8A8CB5273B76ACAD5901DDFD</strong>
- <weak>878883983</weak>
- <size>573</size>
- <position>4185</position>
+ <size>2</size>
+ <strong>D57BF77EE44CD2755E24A56DDC3E159716D04A7ABE009AE977D4926EFEC00F73</strong>
+ <weak>2498368808</weak>
+ <size>973</size>
+ <position>3941</position>
+ <strong>9432C669E21C649A86AC6DC5A34275B483A7D2D38118A462DF1C1CD7BBE5ED51</strong>
+ <weak>2535426829</weak>
+ <size>441</size>
+ <position>110</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
@@ -2806,7 +2810,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-22</id>
+ <id>-20</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -2817,7 +2821,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-23</id>
+ <id>-21</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -2828,7 +2832,18 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-20</id>
+ <id>-22</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-23</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3196,7 +3211,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-6</id>
+ <id>-23</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -3258,17 +3273,6 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-21</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
                                                                                                                 <id>-56</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
@@ -3353,143 +3357,23 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>15</size>
- <variant>2</variant>
- <string>[@#include &lt;(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-58</id>
- </shared_ptr>
- </weak_ptr>
+ <size>5</size>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;#include &lt;(:link </string>
+ <string>[@(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-11</id>
+ <id>-32</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;#include &lt;(:link </string>
+ <string> decl:)&#10;&#10;namespace&#10;boost&#10; {&#10;(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-49</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&gt;&#10;#include &lt;(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-53</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&gt;&#10;#include &lt;(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-15</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&gt;&#10;#include &lt;(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-13</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&gt;&#10;#include &lt;(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-16</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&gt;@]&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-6</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-7</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>3</size>
- <variant>2</variant>
- <string>[@(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-26</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string> decl:)@]&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-8</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-9</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>5</size>
- <variant>2</variant>
- <string>[@(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-32</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string> decl:)&#10;&#10;namespace&#10;boost&#10; {&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-35</id>
+ <id>-35</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -3500,7 +3384,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-10</id>
+ <id>-6</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3522,7 +3406,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-11</id>
+ <id>-7</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3544,7 +3428,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-12</id>
+ <id>-8</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3555,7 +3439,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-13</id>
+ <id>-9</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3577,7 +3461,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-14</id>
+ <id>-10</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3588,7 +3472,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-15</id>
+ <id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3619,7 +3503,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-16</id>
+ <id>-12</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3639,7 +3523,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-22</id>
+ <id>-18</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -3686,7 +3570,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-17</id>
+ <id>-13</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3708,7 +3592,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-18</id>
+ <id>-14</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3719,7 +3603,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-19</id>
+ <id>-15</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3730,7 +3614,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-22</id>
+ <id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3741,7 +3625,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-23</id>
+ <id>-17</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3752,7 +3636,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-20</id>
+ <id>-18</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3763,7 +3647,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-24</id>
+ <id>-19</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3774,7 +3658,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-25</id>
+ <id>-20</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3785,7 +3669,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-26</id>
+ <id>-21</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3796,18 +3680,83 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-27</id>
+ <id>-22</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>15</size>
+ <variant>2</variant>
+ <string>[@#include &lt;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-58</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;&#10;#include &lt;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-7</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;&#10;#include &lt;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-49</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;&#10;#include &lt;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-53</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;&#10;#include &lt;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-11</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;&#10;#include &lt;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-9</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;&#10;#include &lt;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-12</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-28</id>
+ <id>-23</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3818,18 +3767,29 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-29</id>
+ <id>-24</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>3</size>
+ <variant>2</variant>
+ <string>[@(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-26</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> decl:)@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-30</id>
+ <id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3840,7 +3800,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-31</id>
+ <id>-26</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3851,7 +3811,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-32</id>
+ <id>-27</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3862,7 +3822,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-33</id>
+ <id>-28</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3873,7 +3833,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-34</id>
+ <id>-29</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3884,7 +3844,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-35</id>
+ <id>-30</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3895,7 +3855,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-36</id>
+ <id>-31</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3906,7 +3866,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-37</id>
+ <id>-32</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3917,7 +3877,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-38</id>
+ <id>-33</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3928,7 +3888,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-39</id>
+ <id>-34</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3939,7 +3899,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-40</id>
+ <id>-35</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3950,7 +3910,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-41</id>
+ <id>-36</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3961,7 +3921,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-42</id>
+ <id>-37</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3972,7 +3932,62 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-43</id>
+ <id>-38</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-39</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-40</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-41</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-42</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-43</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -4173,17 +4188,6 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-21</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
                                                                                                                 <id>-56</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
@@ -4299,18 +4303,7 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>3</size>
- <variant>2</variant>
- <string>[@typedef T (:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-6</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string> mod=&quot;m&quot;:);@]&#10;</string>
+ <size>0</size>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -4442,28 +4435,6 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-19</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-22</id>
- </shared_ptr>
- </weak_ptr>
- <container>
                                                                                                         <size>5</size>
                                                                                                         <variant>2</variant>
                                                                                                         <string>[@typedef (:link </string>
@@ -4480,7 +4451,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-22</id>
+ <id>-18</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -4491,7 +4462,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-23</id>
+ <id>-19</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -4513,6 +4484,50 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
+ <id>-21</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-22</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-23</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>3</size>
+ <variant>2</variant>
+ <string>[@typedef T (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-23</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> mod=&quot;m&quot;:);@]&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
                                                                                                                 <id>-24</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
@@ -4949,7 +4964,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-6</id>
+ <id>-23</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -5185,7 +5200,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-6</id>
+ <id>-23</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -5205,17 +5220,6 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-21</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
                                                                                                                 <id>-56</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
@@ -5258,7 +5262,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-6</id>
+ <id>-23</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -5393,27 +5397,9 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>5</size>
- <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Definition:&#10;&#10;The expression </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-52</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>&lt;Tag,T&gt;::(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-6</id>
- </shared_ptr>
- </weak_ptr>
+ <size>1</size>
                                                                                                         <variant>2</variant>
- <string> mod=&quot;m&quot;:) evaluates to T.</string>
+ <string>(:auto !!!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -5426,7 +5412,7 @@
                                                                                                 <container>
                                                                                                         <size>1</size>
                                                                                                         <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
+ <string>(:auto !!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -5437,18 +5423,36 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>3</size>
+ <size>7</size>
                                                                                                         <variant>2</variant>
- <string>!!!!Example:&#10;&#10;this is a possible output from the (:link </string>
+ <string>(:auto !!!:)&#10;&#10;Deriving from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-30</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) function, as used in &apos;&apos;libs/exception/example/example_io.cpp:&apos;&apos;&#10;&#10;[@example_io.cpp(83): Throw in function class boost::shared_ptr&lt;struct _iobuf&gt; __cdecl my_fopen(const char *,const char *)&#10;Dynamic exception type: class boost::exception_detail::clone_impl&lt;class fopen_error&gt;&#10;std::exception::what: example_io error&#10;[struct tag_errno *] = 2, OS says &quot;No such file or directory&quot;&#10;[struct tag_file_name *] = tmp1.txt&#10;[struct tag_function *] = fopen&#10;[struct tag_open_mode *] = rb@]&#10;</string>
+ <string>:) effectively decouples the semantics of a failure from the information that is relevant to each individual instance of reporting a failure with a given semantic.&#10;&#10;In other words: with boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-47</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:), what data a given exception object transports depends primarily on the context in which failures are reported (not on its type.) Since exception types need no members, it becomes very natural to throw exceptions that derive from more than one type to indicate multiple appropriate semantics:&#10;&#10;[@struct exception_base: virtual std::exception, virtual boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-47</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) { };&#10;struct io_error: virtual exception_base { };&#10;struct file_error: virtual io_error { };&#10;struct read_error: virtual io_error { };&#10;struct file_read_error: virtual file_error, virtual read_error { };@]&#10;&#10;Using this approach, exception types become a simple tagging system for categorizing errors and selecting failures in exception handlers.&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -5474,7 +5478,7 @@
                                                                                                 <container>
                                                                                                         <size>1</size>
                                                                                                         <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
+ <string>(:auto !!:)&#10;&#10;(:pagelist tags=&quot;macro&quot;:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -5498,36 +5502,9 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>7</size>
- <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;Deriving from boost::(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-47</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:) effectively decouples the semantics of a failure from the information that is relevant to each individual instance of reporting a failure with a given semantic.&#10;&#10;In other words: with boost::(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-47</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:), what data a given exception object transports depends primarily on the context in which failures are reported (not on its type.) Since exception types need no members, it becomes very natural to throw exceptions that derive from more than one type to indicate multiple appropriate semantics:&#10;&#10;[@struct exception_base: virtual std::exception, virtual boost::(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-47</id>
- </shared_ptr>
- </weak_ptr>
+ <size>1</size>
                                                                                                         <variant>2</variant>
- <string>:) { };&#10;struct io_error: virtual exception_base { };&#10;struct file_error: virtual io_error { };&#10;struct read_error: virtual io_error { };&#10;struct file_read_error: virtual file_error, virtual read_error { };@]&#10;&#10;Using this approach, exception types become a simple tagging system for categorizing errors and selecting failures in exception handlers.&#10;</string>
+ <string>(:auto !!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -5553,7 +5530,7 @@
                                                                                                 <container>
                                                                                                         <size>1</size>
                                                                                                         <variant>2</variant>
- <string>(:auto !!:)&#10;&#10;(:pagelist tags=&quot;macro&quot;:)&#10;</string>
+ <string>(:auto !:)&#10;&#10;This is an alphabetical list of all Boost Exception documentation pages.&#10;&#10;(:pagelist fmt=&quot;index&quot; except_tags=&quot;index noindex&quot; mod=&quot;w&quot;:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -5564,59 +5541,7 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:auto !!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-16</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:auto !!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-17</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:auto !!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-18</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:auto !:)&#10;&#10;This is an alphabetical list of all Boost Exception documentation pages.&#10;&#10;(:pagelist fmt=&quot;index&quot; except_tags=&quot;index noindex&quot; mod=&quot;w&quot;:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-19</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>33</size>
+ <size>33</size>
                                                                                                         <variant>2</variant>
                                                                                                         <string>(:auto !!!:)&#10;&#10;Traditionally, when using exceptions to report failures, the throw site:&#10;&#10;*creates an exception object of the appropriate type, and&#10;*stuffs it with data relevant to the detected error.&#10;&#10;A higher context in the program contains a catch statement which:&#10;&#10;*selects failures based on exception types, and&#10;*inspects exception objects for data required to deal with the problem.&#10;&#10;The main issue with this &quot;traditional&quot; approach is that often, the data available at the point of the throw is insufficient for the catch site to handle the failure.&#10;&#10;Here is an example of a catch statement:&#10;&#10;[@catch( file_read_error &amp; e )&#10; {&#10; std::cerr &lt;&lt; e.file_name();&#10; }@]&#10;&#10;And here is a possible matching throw:&#10;&#10;[@void&#10;read_file( FILE * f )&#10; {&#10; ....&#10; size_t nr=fread(buf,1,count,f);&#10; if( ferror(f) )&#10; throw file_read_error(???);&#10; ....&#
10; }@]&#10;&#10;Clearly, the problem is that the handler requires a file name but the read_file function does not have a file name to put in the exception object; all it has is a FILE pointer!&#10;&#10;In an attempt to deal with this problem, we could modify read_file to accept a file name:&#10;&#10;[@void&#10;read_file( FILE * f, char const * name )&#10; {&#10; ....&#10; size_t nr=fread(buf,1,count,f);&#10; if( ferror(f) )&#10; throw file_read_error(name);&#10; ....&#10; }@]&#10;&#10;This is not a real solution: it simply shifts the burden of supplying a file name to the immediate caller of the read_file function.&#10;&#10;-&gt;&apos;&apos;In general, the data required to handle a given library-emitted exception depends on the program that links to it. Many contexts between the throw and the catch may have relevant information which must be transported to the exception handler.&apos;&apos;&#10;&#10;!!!Exception wrapping&#10;&#10;The idea of exception wrapping is to catch an exce
ption from a lower level function (such as the read_file function above), and throw a new exception object that contains the original exception (and also carries a file name.) This method seems to be particularly popular with C++ programmers with Java background.&#10;&#10;Exception wrapping leads to the following problems:&#10;&#10;*To wrap an exception object it must be copied, which may result in slicing.&#10;*Wrapping is practically impossible to use in generic contexts.&#10;&#10;The second point is actually special case of violating the exception neutrality principle. Most contexts in a program can not handle exceptions; such contexts should not interfere with the process of exception handling.&#10;&#10;!!!The boost::exception solution&#10;&#10;*Simply derive your exception types from boost::(:link </string>
                                                                                                         <variant>1</variant>
@@ -5769,69 +5694,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-22</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>9</size>
- <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;This </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-52</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string> typedef is used by </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-34</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string> if it defaults to returning an </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-33</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string> that refers to an object of type </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-28</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>, to record in it the std::type_info of the original exception object.</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-23</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:auto !!:)&#10;&#10;(:pagelist fmt=&quot;index&quot; tags=&quot;hpp&quot; sort_prefix=&quot;6&quot;:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-20</id>
+ <id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -5869,7 +5732,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-5</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -5961,35 +5824,22 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-24</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:auto !!:)&#10;&#10;(:pagelist fmt=&quot;index&quot; tags=&quot;type&quot;:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-25</id>
+ <id>-17</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>11</size>
+ <size>65</size>
                                                                                                         <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;Here is how cloning can be enabled in a throw-expression (15.1):&#10;&#10;[@#include &lt;(:link </string>
+ <string>(:auto !!:)&#10;&#10;!!!Why doesn&apos;t boost::exception derive from std::exception?&#10;&#10;Despite that (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-15</id>
+ <id>-43</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;#include &lt;stdio.h&gt;&#10;#include &lt;errno.h&gt;&#10;&#10;typedef boost::error_info&lt;struct tag_errno,int&gt; errno_info;&#10;&#10;class file_read_error: public boost::(:link </string>
+ <string>|virtual inheritance should be used in deriving from base exception types:), many programmers fail to follow this principle when deriving from std::exception. If boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -5998,47 +5848,34 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) { };&#10;&#10;void&#10;file_read( FILE * f, void * buffer, size_t size )&#10; {&#10; if( size!=fread(buffer,1,size,f) )&#10; throw boost::(:link </string>
+ <string>:) derives from std::exception, using the (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-37</id>
+ <id>-26</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)(file_read_error()) &lt;&lt;&#10; errno_info(errno);&#10; }@]&#10;&#10;Of course, (:link </string>
+ <string>:) function with such user-defined types would introduce dangerous ambiguity which would break all catch(std::exception &amp;) statements.&#10;&#10;Of course, boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-37</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) may be used with any exception type; there is no requirement that it should derive from boost::(:link </string>
+ <string>:) should not be used to replace std::exception as a base type in exception type hierarchies. Instead, it should be included as a virtual base, in addition to std::exception (which should also be derived virtually.)&#10;&#10;!!!Why is boost::exception abstract?&#10;&#10;To prevent exception-neutral contexts from erroneously erasing the type of the original exception when adding (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:).&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-26</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>5</size>
- <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;T must be a class with an accessible no-throw copy constructor as per (15.5.1).&#10;&#10;!!!!Returns:&#10;&#10;* If T derives from boost::(:link </string>
+ <string>:) to an active exception object:&#10;&#10;[@catch( boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -6047,65 +5884,52 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:), the returned object is of type T and is a copy of x.&#10;* Otherwise, the returned object is of an unspecified type that derives publicly from both T and boost::(:link </string>
+ <string>:) &amp; e )&#10; {&#10; e (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-56</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:). The T sub-object is initialized from x by the T copy constructor.&#10;&#10;!!!!Throws:&#10;&#10;Nothing.&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-27</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>17</size>
- <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;The following example demonstrates how errno can be stored in exception objects using Boost Exception:&#10;&#10;[@#include &lt;(:link </string>
+ <string>|&lt;&lt;:) foo_info(foo);&#10; throw e; //Compile error: boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-5</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;#include &lt;errno.h&gt;&#10;#include &lt;iostream&gt;&#10;&#10;typedef boost::(:link </string>
+ <string>:) is abstract&#10; }@]&#10;&#10;The correct code is:&#10;&#10;[@catch( boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-52</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;struct tag_errno,int&gt; errno_info; //(1)&#10;&#10;class my_error: public boost::(:link </string>
+ <string>:) &amp; e )&#10; {&#10; e (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-56</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:), public std::exception { }; //(2)&#10;&#10;void&#10;f()&#10; {&#10; throw my_error() &lt;&lt; errno_info(errno); //(3)&#10; }&#10;@]&#10;&#10;First, we instantiate the (:link </string>
+ <string>|&lt;&lt;:) foo_info(foo);&#10; throw; //Okay, re-throwing the original exception object.&#10; }@]&#10;&#10;!!!What is the space overhead of the boost::exception base class?&#10;&#10;The space overhead for the boost::exception data members is negligible in the context of exception handling. Throwing objects that derive from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-52</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) template using a unique identifier -- tag_errno, and the type of the info it identifies -- int. This provides compile-time type safety for the various values stored in exception objects.&#10;&#10;Second, we define class my_error, which derives from boost::(:link </string>
+ <string>:) does not by itself cause dynamic memory allocations.&#10;&#10;Deriving from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -6114,78 +5938,52 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:).&#10;&#10;Finally, (3) illustrates how the typedef from (1) can be used with (:link </string>
+ <string>:) enables any data to be added to exceptions, which usually does allocate memory. However, this memory is reclaimed when the exception has been handled, and since typically user code does not allocate memory during the unrolling of the stack, adding error info to exceptions should not cause memory fragmentation.&#10;&#10;!!!Should I use boost::throw_exception or BOOST_THROW_EXCEPTION or just throw?&#10;&#10;The benefit of calling boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-56</id>
+ <id>-35</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>|operator&lt;&lt;:) to store values in exception objects at the point of the throw.&#10;&#10;The stored errno value can be recovered at a later time like this:&#10;&#10;[@// ...continued&#10;&#10;void&#10;g()&#10; {&#10; try&#10; {&#10; f();&#10; }&#10; catch(&#10; my_error &amp; x )&#10; {&#10; if( int const * err=boost::(:link </string>
+ <string>:) instead of using throw directly is that it ensures that the emitted exception derives from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-57</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;errno_info&gt;(x) )&#10; std::cerr &lt;&lt; &quot;Error code: &quot; &lt;&lt; *err;&#10; }&#10; }@]&#10;&#10;The (:link </string>
+ <string>:) and that it is compatible with boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-57</id>
+ <id>-34</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) function template is instantiated with the typedef from (1), and is passed an exception object of a polymorphic type. If the exception object contains the requested value, err will point to it; otherwise a null pointer is returned.&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-28</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>5</size>
- <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;This type is used by the (:link </string>
+ <string>:).&#10;&#10;The (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-33</id>
+ <id>-32</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) support in Boost Exception. Please see (:link </string>
+ <string>:) macro also results in a call to boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-34</id>
+ <id>-35</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:).&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-29</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>19</size>
- <variant>2</variant>
- <string>(:auto !!:)&#10;&#10;Boost Exception provides a namespace-scope function (:link </string>
+ <string>:), but in addition it records in the exception object the __FILE__ and __LINE__ of the throw, as well as the pretty name of the function that throws. This has virtually no overhead, yet enables boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -6194,52 +5992,52 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) which takes a boost::(:link </string>
+ <string>:) to compose a more useful, if not user-friendly message.&#10;&#10;Typical use of boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-30</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:). The returned string contains:&#10;&#10;*the string representation of all data objects added to the boost::(:link </string>
+ <string>:) is:&#10;&#10;[@catch( boost::exception &amp; e )&#10; {&#10; std::cerr &lt;&lt; &quot;OMG!&quot; &lt;&lt; boost::diagnostic_information(e);&#10; }&#10;catch( ... )&#10; {&#10; std::cerr &lt;&lt; &quot;OMG!!!&quot;;&#10; }@]&#10;&#10;This is a possible message it may display, the first line is only possible if (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-32</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) through (:link </string>
+ <string>:) is used:&#10;&#10;[@example_io.cpp(83): Throw in function void parse_file(const char *)&#10;Dynamic exception type: class file_open_error&#10;std::exception::what: example_io error&#10;[struct tag_errno_code *] = 2, OS says &quot;No such file or directory&quot;&#10;[struct tag_file_name *] = tmp1.xml&#10;[struct tag_function *] = fopen&#10;[struct tag_open_mode *] = rb@]&#10;!!!Why is boost::exception integrated in boost::throw_exception?&#10;&#10;The boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-56</id>
+ <id>-35</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> mod=&quot;/&quot;:);&#10;*the output from std::exception::what;&#10;*additional platform-specific diagnostic information.&#10;&#10;The returned string is not presentable as a friendly user message, but because it is generated automatically, it is useful for debugging or logging purposes. Here is an example:&#10;&#10;[@#include &lt;(:link </string>
+ <string>:) function predates the Boost Exception library and there has been some concern about its current behavior of injecting boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-5</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;#include &lt;iostream&gt;&#10;&#10;void f(); //throws unknown types that derive from boost::(:link </string>
+ <string>:) as a base of any exception passed to boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-35</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:).&#10;&#10;void&#10;g()&#10; {&#10; try&#10; {&#10; f();&#10; }&#10; catch(&#10; boost::(:link </string>
+ <string>:). Such concerns are dictated by the typical strict interpretation of a common principle in C and C++, that users only pay for features they actually use.&#10;&#10;The problem is that users of Boost Exception can&apos;t by themselves cause a library to throw types that derive from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -6248,38 +6046,34 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) &amp; e )&#10; {&#10; std::cerr &lt;&lt; (:link </string>
+ <string>:), and without this they can&apos;t use any of the Boost Exception facilities.&#10;&#10;For example, if a user wants to use Boost Serialization in a separate thread, it is desirable to be able to transport exceptions emitted by that library into the main thread where they can be analyzed to generate a user-friendly message. This can be easily achieved using boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-30</id>
+ <id>-33</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)(e);&#10; }&#10; }@]&#10;&#10;(:include </string>
+ <string>:), but this requires that Boost Serialization throws exceptions using boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-8</id>
+ <id>-37</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-30</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>29</size>
+ <string>:). If Boost Serialization calls boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-35</id>
+ </shared_ptr>
+ </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Returns:&#10;&#10;A string value that contains varying amount of implementation-specific diagnostic information about the passed exception object:&#10;&#10;*If E can be statically converted to boost::(:link </string>
+ <string>:) to throw, this behavior happens automatically and transparently.&#10;&#10;The cost of this integration is:&#10;&#10;* In terms of space: a pointer and 3 ints are added to the static size of exception objects.&#10;* In terms of speed: the pointer is initialized to null at the point of the throw.&#10;* In terms of coupling: about 400 self-contained lines of C++ with no external includes.&#10;&#10;!!!Why use operator&lt;&lt; overload for adding info to exceptions?&#10;&#10;Before throwing an object of type that derives from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -6288,7 +6082,7 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:), the returned value contains the string representations of all (:link </string>
+ <string>:), it is often desirable to add one or more (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -6297,16 +6091,16 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) objects stored in the boost::(:link </string>
+ <string>:) objects in it. The syntactic sugar provided by (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-56</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) through (:link </string>
+ <string>:) allows this to be done directly in a throw expression:&#10;&#10;[@throw error() (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -6315,213 +6109,326 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> mod=&quot;/&quot;:), 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.&#10;*Otherwise, if E can be statically converted std::exception:&#10;**if e can be dynamically converted to boost::exception, the returned value is the same as if E could be statically converted to boost::(:link </string>
+ <string>|&lt;&lt;:) foo_info(foo) (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-56</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:);&#10;**otherwise the returned value contains the what() string.&#10;*Otherwise, the boost::</string>
+ <string>|&lt;&lt;:) bar_info(bar);@]&#10;&#10;which saves typing compared to this possible alternative:&#10;&#10;[@error e;&#10;e.add(foo_info(foo));&#10;e.add(bar_info(bar));&#10;throw e;@]&#10;&#10;and looks better than something like:&#10;&#10;[@throw error().add(foo_info(foo)).add(bar_info(bar));@]&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-18</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>9</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;This </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-30</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> template is not available.&#10;&#10;The string representation of each (:link </string>
+ <string> typedef is used by </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-52</id>
+ <id>-34</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) object is deduced by a function call that is bound at the time the (:link </string>
+ <string> if it defaults to returning an </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-52</id>
+ <id>-33</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;Tag,T&gt; template is instantiated. The following overload resolutions are attempted in order:&#10;&#10;#Unqualified call to to_string(x), where x is of type (:link </string>
+ <string> that refers to an object of type </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-52</id>
+ <id>-28</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;Tag,T&gt; (the return value is expected to be of type std::string.)&#10;#Unqualified call to to_string(x.(:link </string>
+ <string>, to record in it the std::type_info of the original exception object.</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-19</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:auto !!:)&#10;&#10;(:pagelist fmt=&quot;index&quot; tags=&quot;hpp&quot; sort_prefix=&quot;6&quot;:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-20</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:auto !!:)&#10;&#10;(:pagelist fmt=&quot;index&quot; tags=&quot;type&quot;:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-21</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>11</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;Here is how cloning can be enabled in a throw-expression (15.1):&#10;&#10;[@#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-55</id>
+ <id>-11</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> mod=&quot;m&quot;:)()) (the return value is expected to be of type std::string.)&#10;#Unqualified call to s &lt;&lt; x.(:link </string>
+ <string>:)&gt;&#10;#include &lt;stdio.h&gt;&#10;#include &lt;errno.h&gt;&#10;&#10;typedef boost::error_info&lt;struct tag_errno,int&gt; errno_info;&#10;&#10;class file_read_error: public boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-55</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> mod=&quot;m&quot;:)(), where s is a std::ostringstream.&#10;&#10;The first successfully bound function is used at the time (:link </string>
+ <string>:) { };&#10;&#10;void&#10;file_read( FILE * f, void * buffer, size_t size )&#10; {&#10; if( size!=fread(buffer,1,size,f) )&#10; throw boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-30</id>
+ <id>-37</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) is called; if all 3 overload resolutions are unsuccessful, the system is unable to convert the (:link </string>
+ <string>:)(file_read_error()) &lt;&lt;&#10; errno_info(errno);&#10; }@]&#10;&#10;Of course, (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-52</id>
+ <id>-37</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) object to string, and &apos;&apos;an unspecified stub string value is used without issuing a compile error.&apos;&apos;&#10;&#10;!!!!Notes:&#10;&#10;*The format of the returned string is unspecified.&#10;*The returned string is &apos;&apos;not&apos;&apos; user-friendly.&#10;*The returned string may include additional platform-specific diagnostic information.&#10;&#10;(:include </string>
+ <string>:) may be used with any exception type; there is no requirement that it should derive from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-8</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)</string>
+ <string>:).&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-31</id>
+ <id>-22</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>19</size>
+ <size>1</size>
                                                                                                         <variant>2</variant>
- <string>(:auto !!:)&#10;&#10;Boost Exception responds to the following configuration macros:&#10;&#10;&apos;&apos;&apos;BOOST_NO_RTTI&apos;&apos;&apos;\\&#10;&apos;&apos;&apos;BOOST_NO_TYPEID&apos;&apos;&apos;&#10;&#10;The first macro prevents Boost Exception from using dynamic_cast and dynamic typeid. If the second macro is also defined, Boost Exception does not use static typeid either. There are no observable degrading effects on the library functionality, except for the following:&#10;&#10;-&gt;By default, the (:link </string>
+ <string>(:auto !!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-23</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>5</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Definition:&#10;&#10;The expression </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-57</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) function template can be called with any exception type. If BOOST_NO_RTTI is defined, (:link </string>
+ <string>&lt;Tag,T&gt;::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-57</id>
+ <id>-23</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) can be used only with objects of type boost::(:link </string>
+ <string> mod=&quot;m&quot;:) evaluates to T.</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-24</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-25</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>3</size>
+ <variant>2</variant>
+ <string>!!!!Example:&#10;&#10;this is a possible output from the (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-30</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:).&#10;&#10;!!!!Note:&#10;&#10;The library needs RTTI functionality. Disabling the language RTTI support enables an internal RTTI system, which may have more or less overhead depending on the platform.&#10;&#10;&apos;&apos;&apos;BOOST_EXCEPTION_DISABLE&apos;&apos;&apos;&#10;&#10;By default, (:link </string>
+ <string>:) function, as used in &apos;&apos;libs/exception/example/example_io.cpp:&apos;&apos;&#10;&#10;[@example_io.cpp(83): Throw in function class boost::shared_ptr&lt;struct _iobuf&gt; __cdecl my_fopen(const char *,const char *)&#10;Dynamic exception type: class boost::exception_detail::clone_impl&lt;class fopen_error&gt;&#10;std::exception::what: example_io error&#10;[struct tag_errno *] = 2, OS says &quot;No such file or directory&quot;&#10;[struct tag_file_name *] = tmp1.txt&#10;[struct tag_function *] = fopen&#10;[struct tag_open_mode *] = rb@]&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-26</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>5</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;T must be a class with an accessible no-throw copy constructor as per (15.5.1).&#10;&#10;!!!!Returns:&#10;&#10;* If T derives from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-37</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) and (:link </string>
+ <string>:), the returned object is of type T and is a copy of x.&#10;* Otherwise, the returned object is of an unspecified type that derives publicly from both T and boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-26</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) are integrated directly in the (:link </string>
+ <string>:). The T sub-object is initialized from x by the T copy constructor.&#10;&#10;!!!!Throws:&#10;&#10;Nothing.&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-27</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>17</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;The following example demonstrates how errno can be stored in exception objects using Boost Exception:&#10;&#10;[@#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-35</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) function. Defining BOOST_EXCEPTION_DISABLE disables this integration.&#10;&#10;Note that on some non-conformant compilers, for example MSVC 7.0 and older, as well as BCC, BOOST_EXCEPTION_DISABLE is implicitly defined in (:link </string>
+ <string>:)&gt;&#10;#include &lt;errno.h&gt;&#10;#include &lt;iostream&gt;&#10;&#10;typedef boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-9</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:).&#10;&#10;&apos;&apos;&apos;BOOST_NO_EXCEPTIONS&apos;&apos;&apos;&#10;&#10;This macro disables exception handling in Boost, forwarding all exceptions to a user-defined non-template version of boost::</string>
+ <string>:)&lt;struct tag_errno,int&gt; errno_info; //(1)&#10;&#10;class my_error: public boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-35</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>. However, unless BOOST_EXCEPTION_DISABLE is also defined, users can still examine the exception object for any data added at the point of the throw, or use boost::</string>
+ <string>:), public std::exception { }; //(2)&#10;&#10;void&#10;f()&#10; {&#10; throw my_error() &lt;&lt; errno_info(errno); //(3)&#10; }&#10;@]&#10;&#10;First, we instantiate the (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-30</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> (of course under BOOST_NO_EXCEPTIONS, the user-defined boost::throw_exception is not allowed to return to the caller.)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-32</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>7</size>
+ <string>:) template using a unique identifier -- tag_errno, and the type of the info it identifies -- int. This provides compile-time type safety for the various values stored in exception objects.&#10;&#10;Second, we define class my_error, which derives from boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-47</id>
+ </shared_ptr>
+ </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;This macro takes an exception object, records BOOST_CURRENT_FUNCTION, __FILE__ and __LINE__ in it, and forwards it to </string>
+ <string>:).&#10;&#10;Finally, (3) illustrates how the typedef from (1) can be used with (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-35</id>
+ <id>-56</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>. To recover this information at the catch site, use </string>
+ <string>|operator&lt;&lt;:) to store values in exception objects at the point of the throw.&#10;&#10;The stored errno value can be recovered at a later time like this:&#10;&#10;[@// ...continued&#10;&#10;void&#10;g()&#10; {&#10; try&#10; {&#10; f();&#10; }&#10; catch(&#10; my_error &amp; x )&#10; {&#10; if( int const * err=boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -6530,29 +6437,29 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>; the information is also included in the message returned by </string>
+ <string>:)&lt;errno_info&gt;(x) )&#10; std::cerr &lt;&lt; &quot;Error code: &quot; &lt;&lt; *err;&#10; }&#10; }@]&#10;&#10;The (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-30</id>
+ <id>-57</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>.&#10;</string>
+ <string>:) function template is instantiated with the typedef from (1), and is passed an exception object of a polymorphic type. If the exception object contains the requested value, err will point to it; otherwise a null pointer is returned.&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-33</id>
+ <id>-28</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>19</size>
+ <size>5</size>
                                                                                                         <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;The (:link </string>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;This type is used by the (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -6561,294 +6468,307 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) type can be used to refer to a copy of an exception object. It is Default Constructible, Copy Constructible, Assignable and Equality Comparable; (:link </string>
+ <string>:) support in Boost Exception. Please see (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-33</id>
+ <id>-34</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&apos;s operations do not throw.&#10;&#10;The referenced object remains valid at least as long as there is an </string>
+ <string>:).&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-29</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>19</size>
+ <variant>2</variant>
+ <string>(:auto !!:)&#10;&#10;Boost Exception provides a namespace-scope function (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-33</id>
+ <id>-30</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> object that refers to it.&#10;&#10;Two instances of (:link </string>
+ <string>:) which takes a boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-33</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) are equivalent and compare equal if and only if they refer to the same exception.&#10;&#10;The default constructor of (:link </string>
+ <string>:). The returned string contains:&#10;&#10;*the string representation of all data objects added to the boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-33</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) produces the null value of the type. The null value is equivalent only to itself.&#10;&#10;!!!!Thread safety&#10;&#10;* It is legal for multiple threads to hold (:link </string>
+ <string>:) through (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-33</id>
+ <id>-56</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) references to the same exception object.&#10;* It is illegal for multiple threads to modify the same (:link </string>
+ <string> mod=&quot;/&quot;:);&#10;*the output from std::exception::what;&#10;*additional platform-specific diagnostic information.&#10;&#10;The returned string is not presentable as a friendly user message, but because it is generated automatically, it is useful for debugging or logging purposes. Here is an example:&#10;&#10;[@#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-33</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) object concurrently.&#10;* While calling (:link </string>
+ <string>:)&gt;&#10;#include &lt;iostream&gt;&#10;&#10;void f(); //throws unknown types that derive from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-34</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) makes a copy of the current exception object, it is still possible for the two copies to share internal state. Therefore, in general it is not safe to call (:link </string>
+ <string>:).&#10;&#10;void&#10;g()&#10; {&#10; try&#10; {&#10; f();&#10; }&#10; catch(&#10; boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-39</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) concurrently to throw the same exception object into multiple threads.&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-34</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>33</size>
- <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;The (:link </string>
+ <string>:) &amp; e )&#10; {&#10; std::cerr &lt;&lt; (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-34</id>
+ <id>-30</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) function must not be called outside of a catch block.&#10;&#10;!!!!Returns:&#10;&#10;* An (:link </string>
+ <string>:)(e);&#10; }&#10; }@]&#10;&#10;(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-33</id>
+ <id>-25</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) that refers to the currently handled exception or a copy of the currently handled exception.&#10;* If the function needs to allocate memory and the attempt fails, it returns an (:link </string>
+ <string>:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-30</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>29</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Returns:&#10;&#10;A string value that contains varying amount of implementation-specific diagnostic information about the passed exception object:&#10;&#10;*If E can be statically converted to boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-33</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) that refers to an instance of std::bad_alloc.&#10;&#10;!!!!Throws:&#10;&#10;Nothing.&#10;&#10;!!!!Notes:&#10;&#10;* It is unspecified whether the return values of two successive calls to (:link </string>
+ <string>:), the returned value contains the string representations of all (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-34</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) refer to the same exception object.&#10;* Correct implementation of (:link </string>
+ <string>:) objects stored in the boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-34</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) may require compiler support, unless (:link </string>
+ <string>:) through (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-37</id>
+ <id>-56</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) was used at the time the currently handled exception object was passed to throw. Whenever </string>
+ <string> mod=&quot;/&quot;:), 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.&#10;*Otherwise, if E can be statically converted std::exception:&#10;**if e can be dynamically converted to boost::exception, the returned value is the same as if E could be statically converted to boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-34</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> fails to properly copy the current exception object, it returns an </string>
+ <string>:);&#10;**otherwise the returned value contains the what() string.&#10;*Otherwise, the boost::</string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-33</id>
+ <id>-30</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> to an object of type that is as close as possible to the original exception type, using </string>
+ <string> template is not available.&#10;&#10;The string representation of each (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-28</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> as a final fallback. All such types derive from boost::</string>
+ <string>:) object is deduced by a function call that is bound at the time the (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>, and:&#10;** if the original exception object derives from boost::(:link </string>
+ <string>:)&lt;Tag,T&gt; template is instantiated. The following overload resolutions are attempted in order:&#10;&#10;#Unqualified call to to_string(x), where x is of type (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:), then the boost::(:link </string>
+ <string>:)&lt;Tag,T&gt; (the return value is expected to be of type std::string.)&#10;#Unqualified call to to_string(x.(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-55</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) sub-object of the object referred to by the returned </string>
+ <string> mod=&quot;m&quot;:)()) (the return value is expected to be of type std::string.)&#10;#Unqualified call to s &lt;&lt; x.(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-33</id>
+ <id>-55</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> is initialized by the boost::(:link </string>
+ <string> mod=&quot;m&quot;:)(), where s is a std::ostringstream.&#10;&#10;The first successfully bound function is used at the time (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-30</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) copy constructor;&#10;** if available, the exception contains the std::type_info of the original exception object, accessible through </string>
+ <string>:) is called; if all 3 overload resolutions are unsuccessful, the system is unable to convert the (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-57</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>&lt;</string>
+ <string>:) object to string, and &apos;&apos;an unspecified stub string value is used without issuing a compile error.&apos;&apos;&#10;&#10;!!!!Notes:&#10;&#10;*The format of the returned string is unspecified.&#10;*The returned string is &apos;&apos;not&apos;&apos; user-friendly.&#10;*The returned string may include additional platform-specific diagnostic information.&#10;&#10;(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-22</id>
+ <id>-25</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>&gt;.&#10;</string>
+ <string>:)</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-35</id>
+ <id>-31</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>17</size>
+ <size>19</size>
                                                                                                         <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;E must derive publicly from std::exception.&#10;&#10;!!!!Effects:&#10;&#10;* If BOOST_NO_EXCEPTIONS is not defined, boost::(:link </string>
+ <string>(:auto !!:)&#10;&#10;Boost Exception responds to the following configuration macros:&#10;&#10;&apos;&apos;&apos;BOOST_NO_RTTI&apos;&apos;&apos;\\&#10;&apos;&apos;&apos;BOOST_NO_TYPEID&apos;&apos;&apos;&#10;&#10;The first macro prevents Boost Exception from using dynamic_cast and dynamic typeid. If the second macro is also defined, Boost Exception does not use static typeid either. There are no observable degrading effects on the library functionality, except for the following:&#10;&#10;-&gt;By default, the (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-35</id>
+ <id>-57</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)(e) is equivalent to throw boost::(:link </string>
+ <string>:) function template can be called with any exception type. If BOOST_NO_RTTI is defined, (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-37</id>
+ <id>-57</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)(boost::(:link </string>
+ <string>:) can be used only with objects of type boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-26</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)(e)), unless BOOST_EXCEPTION_DISABLE is defined, in which case boost::(:link </string>
+ <string>:).&#10;&#10;!!!!Note:&#10;&#10;The library needs RTTI functionality. Disabling the language RTTI support enables an internal RTTI system, which may have more or less overhead depending on the platform.&#10;&#10;&apos;&apos;&apos;BOOST_EXCEPTION_DISABLE&apos;&apos;&apos;&#10;&#10;By default, (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-35</id>
+ <id>-37</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)(e) is equivalent to throw e;&#10;* If BOOST_NO_EXCEPTIONS is defined, the function is left undefined, and the user is expected to supply an appropriate definition. Callers of (:link </string>
+ <string>:) and (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-35</id>
+ <id>-26</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) are allowed to assume that the function never returns; therefore, if the user-defined (:link </string>
+ <string>:) are integrated directly in the (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -6857,16 +6777,25 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) returns, the behavior is undefined.&#10;&#10;!!!!Note:&#10;&#10;Under BOOST_NO_EXCEPTIONS, unless BOOST_EXCEPTION_DISABLE is also defined, users can examine the passed exception object using boost::</string>
+ <string>:) function. Defining BOOST_EXCEPTION_DISABLE disables this integration.&#10;&#10;Note that on some non-conformant compilers, for example MSVC 7.0 and older, as well as BCC, BOOST_EXCEPTION_DISABLE is implicitly defined in (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-57</id>
+ <id>-5</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>, or format an automatic diagnostic message using boost::</string>
+ <string>:).&#10;&#10;&apos;&apos;&apos;BOOST_NO_EXCEPTIONS&apos;&apos;&apos;&#10;&#10;This macro disables exception handling in Boost, forwarding all exceptions to a user-defined non-template version of boost::</string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-35</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>. However, unless BOOST_EXCEPTION_DISABLE is also defined, users can still examine the exception object for any data added at the point of the throw, or use boost::</string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -6875,42 +6804,60 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>.</string>
+ <string> (of course under BOOST_NO_EXCEPTIONS, the user-defined boost::throw_exception is not allowed to return to the caller.)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-36</id>
+ <id>-32</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>3</size>
+ <size>7</size>
                                                                                                         <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;(:include decl:)&#10;&#10;!!!!Effects:&#10;&#10;&#10;&#10;Frees all resources associated with a boost::(:link </string>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;This macro takes an exception object, records BOOST_CURRENT_FUNCTION, __FILE__ and __LINE__ in it, and forwards it to </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-35</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) object.&#10;&#10;!!!!Throws:&#10;&#10;&#10;&#10;Nothing.&#10;</string>
+ <string>. To recover this information at the catch site, use </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-57</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>; the information is also included in the message returned by </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-30</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>.&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-37</id>
+ <id>-33</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>21</size>
+ <size>25</size>
                                                                                                         <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;* T must be a class with an accessible no-throw copy constructor.&#10;* If T has any virtual base types, those types must have an accessible default constructor.&#10;&#10;!!!!Returns:&#10;&#10;An object of &apos;&apos;unspecified&apos;&apos; type which derives publicly from T. That is, the returned object can be intercepted by a catch(T &amp;).&#10;&#10;!!!!Description:&#10;&#10;&#10;&#10;This function is designed to be used directly in a throw-expression to enable the (:link </string>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;The (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -6919,34 +6866,34 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) support in Boost Exception. For example:&#10;&#10;[@class&#10;my_exception:&#10; public std::exception&#10; {&#10; };&#10;&#10;....&#10;throw boost::(:link </string>
+ <string>:) type can be used to refer to a copy of an exception object. It is Default Constructible, Copy Constructible, Assignable and Equality Comparable; (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-37</id>
+ <id>-33</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)(my_exception());@]&#10;&#10;Unless (:link </string>
+ <string>:)&apos;s operations do not throw.&#10;&#10;The referenced object remains valid at least as long as there is an (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-37</id>
+ <id>-33</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) is called at the time an exception object is used in a throw-expression, an attempt to copy it using (:link </string>
+ <string>:) object that refers to it.&#10;&#10;Two instances of (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-34</id>
+ <id>-33</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) may return an (:link </string>
+ <string>:) are equivalent and compare equal if and only if they refer to the same exception.&#10;&#10;The default constructor of (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -6955,43 +6902,43 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) which refers to an instance of (:link </string>
+ <string>:) produces the null value of the type. The null value is equivalent only to itself.&#10;&#10;!!!!Thread safety&#10;&#10;* It is legal for multiple threads to hold (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-28</id>
+ <id>-33</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:). See (:link </string>
+ <string>:) references to the same exception object.&#10;* It is illegal for multiple threads to modify the same (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-34</id>
+ <id>-33</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) for details.&#10;&#10;!!!!Note:&#10;&#10;Instead of using the throw keyword directly, it is preferable to call boost::(:link </string>
+ <string>:) object concurrently.&#10;* While calling (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-35</id>
+ <id>-34</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:). This is guaranteed to throw an exception that derives from boost::(:link </string>
+ <string>:) makes a copy of the current exception object, it is still possible for the two copies to share internal state. Therefore, in general it is not safe to call (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-39</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) and supports the (:link </string>
+ <string>:) concurrently to throw the same exception object into multiple threads.&#10;&#10;!!!!Nesting of exceptions&#10;&#10;An </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -7000,100 +6947,92 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) functionality.&#10;</string>
+ <string> can be added as </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-52</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> to any boost::</string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-47</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>. This is a convenient way to nest exceptions. There is no limit on the depth of the nesting, however cyclic references result in undefined behavior.</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-38</id>
+ <id>-34</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>13</size>
+ <size>33</size>
                                                                                                         <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;The code snippet below demonstrates how boost::(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html|tuple:) can be used to bundle the name of the function that failed, together with the reported errno so that they can be added to exception objects more conveniently together:&#10;&#10;[@#include &lt;(:link </string>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;The (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-13</id>
+ <id>-34</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;#include &lt;boost/shared_ptr.hpp&gt;&#10;#include &lt;stdio.h&gt;&#10;#include &lt;string&gt;&#10;#include &lt;errno.h&gt;&#10;&#10;typedef boost::(:link </string>
+ <string>:) function must not be called outside of a catch block.&#10;&#10;!!!!Returns:&#10;&#10;* An (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-52</id>
+ <id>-33</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;struct tag_file_name,std::string&gt; file_name_info;&#10;typedef boost::(:link </string>
+ <string>:) that refers to the currently handled exception or a copy of the currently handled exception.&#10;* If the function needs to allocate memory and the attempt fails, it returns an (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-52</id>
+ <id>-33</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;struct tag_function,char const *&gt; function_info;&#10;typedef boost::(:link </string>
+ <string>:) that refers to an instance of std::bad_alloc.&#10;&#10;!!!!Throws:&#10;&#10;Nothing.&#10;&#10;!!!!Notes:&#10;&#10;* It is unspecified whether the return values of two successive calls to (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-52</id>
+ <id>-34</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;struct tag_errno,int&gt; errno_info;&#10;typedef boost::tuple&lt;function_info,errno_info&gt; clib_failure;&#10;&#10;class file_open_error: public boost::(:link </string>
+ <string>:) refer to the same exception object.&#10;* Correct implementation of (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-34</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) { };&#10;&#10;boost::shared_ptr&lt;FILE&gt;&#10;file_open( char const * name, char const * mode )&#10; {&#10; if( FILE * f=fopen(name,mode) )&#10; return boost::shared_ptr&lt;FILE&gt;(f,fclose);&#10; else&#10; throw file_open_error() &lt;&lt;&#10; file_name_info(name) &lt;&lt;&#10; clib_failure(&quot;fopen&quot;,errno);&#10; }@]&#10;&#10;Note that the members of a boost::(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html|tuple:) are stored separately in exception objects; they can only be retrieved individually, using (:link </string>
+ <string>:) may require compiler support, unless (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-57</id>
+ <id>-37</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:).&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-39</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Precondition:&#10;&#10;ep shall not be null.&#10;&#10;!!!!Throws:&#10;&#10;&#10;&#10;The exception to which ep refers.&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-40</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>37</size>
- <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;When you catch an exception, you can call (:link </string>
+ <string>:) was used at the time the currently handled exception object was passed to throw. Whenever </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -7102,7 +7041,7 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) to get an (:link </string>
+ <string> fails to properly copy the current exception object, it returns an </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -7111,16 +7050,16 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) object:&#10;&#10;[@#include &lt;(:link </string>
+ <string> to an object of type that is as close as possible to the original exception type, using </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-16</id>
+ <id>-28</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;#include &lt;boost/thread.hpp&gt;&#10;#include &lt;boost/bind.hpp&gt;&#10;&#10;void do_work(); //throws cloning-enabled boost::(:link </string>
+ <string> as a final fallback. All such types derive from boost::</string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -7129,548 +7068,574 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)s&#10;&#10;void&#10;worker_thread( boost::(:link </string>
+ <string>, and:&#10;** if the original exception object derives from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-33</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) &amp; error )&#10; {&#10; try&#10; {&#10; do_work();&#10; error = boost::(:link </string>
+ <string>:), then the boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-33</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)();&#10; }&#10; catch(&#10; ... )&#10; {&#10; error = boost::(:link </string>
+ <string>:) sub-object of the object referred to by the returned </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-34</id>
+ <id>-33</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)();&#10; }&#10; }@]&#10;&#10;In the above example, note that (:link </string>
+ <string> is initialized by the boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-34</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) captures the original type of the exception object. The exception can be thrown again using the (:link </string>
+ <string>:) copy constructor;&#10;** if available, the exception contains the std::type_info of the original exception object, accessible through </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-39</id>
+ <id>-57</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) function:&#10;&#10;[@// ...continued&#10;&#10;void&#10;work()&#10; {&#10; boost::(:link </string>
+ <string>&lt;</string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-33</id>
+ <id>-18</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) error;&#10; boost::(:link http://www.boost.org/doc/html/boost/thread.html|thread:) t( boost::(:link http://www.boost.org/libs/bind/bind.html|bind:)(worker_thread,boost::(:link http://www.boost.org/doc/html/ref.html|ref:)(error)) );&#10; t.(:link http://www.boost.org/doc/html/boost/thread.html|join:)();&#10; if( error )&#10; boost::(:link </string>
+ <string>&gt;.&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-35</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>17</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;E must derive publicly from std::exception.&#10;&#10;!!!!Effects:&#10;&#10;* If BOOST_NO_EXCEPTIONS is not defined, boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-39</id>
+ <id>-35</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)(error);&#10; }@]&#10;&#10;Note that (:link </string>
+ <string>:)(e) is equivalent to throw boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-34</id>
+ <id>-37</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) could fail to copy the original exception object in the following cases:&#10;&#10;* if there is not enough memory, in which case the returned (:link </string>
+ <string>:)(boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-33</id>
+ <id>-26</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) points to an instance of std::bad_alloc, or&#10;* if (:link </string>
+ <string>:)(e)), unless BOOST_EXCEPTION_DISABLE is defined, in which case boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-37</id>
+ <id>-35</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) was not used in the throw-expression passed to the original throw statement and the current implementation does not have the necessary compiler-specific support to copy the exception automatically, in which case the returned (:link </string>
+ <string>:)(e) is equivalent to throw e;&#10;* If BOOST_NO_EXCEPTIONS is defined, the function is left undefined, and the user is expected to supply an appropriate definition. Callers of (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-33</id>
+ <id>-35</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) points to an instance of (:link </string>
+ <string>:) are allowed to assume that the function never returns; therefore, if the user-defined (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-28</id>
+ <id>-35</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:).&#10;&#10;Regardless, the use of (:link </string>
+ <string>:) returns, the behavior is undefined.&#10;&#10;!!!!Note:&#10;&#10;Under BOOST_NO_EXCEPTIONS, unless BOOST_EXCEPTION_DISABLE is also defined, users can examine the passed exception object using boost::</string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-34</id>
+ <id>-57</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) and (:link </string>
+ <string>, or format an automatic diagnostic message using boost::</string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-39</id>
+ <id>-30</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) in the above examples is well-formed.&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-41</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:auto !!:)&#10;&#10;(:pagelist fmt=&quot;index&quot; tags=&quot;function&quot;:)&#10;</string>
+ <string>.</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-42</id>
+ <id>-36</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
                                                                                                         <size>3</size>
                                                                                                         <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Effects:&#10;&#10;Stores a copy of v in the </string>
+ <string>(:auto !!!:)&#10;&#10;(:include decl:)&#10;&#10;!!!!Effects:&#10;&#10;&#10;&#10;Frees all resources associated with a boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-52</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> object.&#10;&#10;(:include throws:)&#10;</string>
+ <string>:) object.&#10;&#10;!!!!Throws:&#10;&#10;&#10;&#10;Nothing.&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-43</id>
+ <id>-37</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>5</size>
+ <size>21</size>
                                                                                                         <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;Exception types should use virtual inheritance when deriving from other exception types. This insight is due to Andrew Koenig. Using virtual inheritance prevents ambiguity problems in the exception handler:&#10;&#10;[@#include &lt;iostream&gt;&#10;struct my_exc1 : std::exception { char const* what() const throw(); };&#10;struct my_exc2 : std::exception { char const* what() const throw(); };&#10;struct your_exc3 : my_exc1, my_exc2 {};&#10;&#10;int&#10;main()&#10; {&#10; try { throw your_exc3(); }&#10; catch(std::exception const&amp; e) {}&#10; catch(...) { std::cout &lt;&lt; &quot;whoops!&quot; &lt;&lt; std::endl; }&#10; }@]&#10;&#10;The program above outputs &quot;whoops!&quot; because the conversion to std::exception is ambiguous.&#10;&#10;The overhead introduced by virtual inheritance is always negligible in the context of exception handling. Note that virtual bases are initialized directly by the constructor of the most-derived-type (the type pass
ed to the throw statement, in case of exceptions.) However, typically this detail is of no concern when boost::(:link </string>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;* T must be a class with an accessible no-throw copy constructor.&#10;* If T has any virtual base types, those types must have an accessible default constructor.&#10;&#10;!!!!Returns:&#10;&#10;An object of &apos;&apos;unspecified&apos;&apos; type which derives publicly from T. That is, the returned object can be intercepted by a catch(T &amp;).&#10;&#10;!!!!Description:&#10;&#10;&#10;&#10;This function is designed to be used directly in a throw-expression to enable the (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-33</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) is used, because it enables exception types to be trivial structs with no members (there&apos;s nothing to initialize.) See (:link </string>
+ <string>:) support in Boost Exception. For example:&#10;&#10;[@class&#10;my_exception:&#10; public std::exception&#10; {&#10; };&#10;&#10;....&#10;throw boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-12</id>
+ <id>-37</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> mod=&quot;w&quot;:).&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-44</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>45</size>
- <variant>2</variant>
- <string>!!Synopsis&#10;&#10;List of documented definitions, declarations and includes by header file:&#10;&#10;`#include &lt;(:link </string>
+ <string>:)(my_exception());@]&#10;&#10;Unless (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-49</id>
+ <id>-37</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;&#10;[@(:include </string>
+ <string>:) is called at the time an exception object is used in a throw-expression, an attempt to copy it using (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-49</id>
+ <id>-34</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> synopsis:)@]&#10;&#10;`#include &lt;(:link </string>
+ <string>:) may return an (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-11</id>
+ <id>-33</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;&#10;[@(:include </string>
+ <string>:) which refers to an instance of (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-11</id>
+ <id>-28</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> synopsis:)@]&#10;&#10;`#include &lt;(:link </string>
+ <string>:). See (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-15</id>
+ <id>-34</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;&#10;[@(:include </string>
+ <string>:) for details.&#10;&#10;!!!!Note:&#10;&#10;Instead of using the throw keyword directly, it is preferable to call boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-15</id>
+ <id>-35</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> synopsis:)@]&#10;&#10;`#include &lt;(:link </string>
+ <string>:). This is guaranteed to throw an exception that derives from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-13</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;&#10;[@(:include </string>
+ <string>:) and supports the (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-13</id>
+ <id>-33</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> synopsis:)@]&#10;&#10;`#include &lt;(:link </string>
+ <string>:) functionality.&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-38</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>13</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;The code snippet below demonstrates how boost::(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html|tuple:) can be used to bundle the name of the function that failed, together with the reported errno so that they can be added to exception objects more conveniently together:&#10;&#10;[@#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-9</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;&#10;[@(:include </string>
+ <string>:)&gt;&#10;#include &lt;boost/shared_ptr.hpp&gt;&#10;#include &lt;stdio.h&gt;&#10;#include &lt;string&gt;&#10;#include &lt;errno.h&gt;&#10;&#10;typedef boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> synopsis:)@]&#10;&#10;`#include &lt;(:link </string>
+ <string>:)&lt;struct tag_file_name,std::string&gt; file_name_info;&#10;typedef boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-58</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;&#10;[@(:include </string>
+ <string>:)&lt;struct tag_function,char const *&gt; function_info;&#10;typedef boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-58</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> synopsis:)@]&#10;&#10;`#include &lt;(:link </string>
+ <string>:)&lt;struct tag_errno,int&gt; errno_info;&#10;typedef boost::tuple&lt;function_info,errno_info&gt; clib_failure;&#10;&#10;class file_open_error: public boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-17</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;&#10;[@(:include </string>
+ <string>:) { };&#10;&#10;boost::shared_ptr&lt;FILE&gt;&#10;file_open( char const * name, char const * mode )&#10; {&#10; if( FILE * f=fopen(name,mode) )&#10; return boost::shared_ptr&lt;FILE&gt;(f,fclose);&#10; else&#10; throw file_open_error() &lt;&lt;&#10; file_name_info(name) &lt;&lt;&#10; clib_failure(&quot;fopen&quot;,errno);&#10; }@]&#10;&#10;Note that the members of a boost::(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html|tuple:) are stored separately in exception objects; they can only be retrieved individually, using (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-17</id>
+ <id>-57</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> synopsis:)@]&#10;&#10;`#include &lt;(:link </string>
+ <string>:).&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-39</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Precondition:&#10;&#10;ep shall not be null.&#10;&#10;!!!!Throws:&#10;&#10;&#10;&#10;The exception to which ep refers.&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-40</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>37</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;When you catch an exception, you can call (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-16</id>
+ <id>-34</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;&#10;[@(:include </string>
+ <string>:) to get an (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-16</id>
+ <id>-33</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> synopsis:)@]&#10;&#10;`#include &lt;(:link </string>
+ <string>:) object:&#10;&#10;[@#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-10</id>
+ <id>-12</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;&#10;[@(:include </string>
+ <string>:)&gt;&#10;#include &lt;boost/thread.hpp&gt;&#10;#include &lt;boost/bind.hpp&gt;&#10;&#10;void do_work(); //throws cloning-enabled boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-10</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> synopsis:)@]&#10;&#10;`#include &lt;(:link </string>
+ <string>:)s&#10;&#10;void&#10;worker_thread( boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-9</id>
+ <id>-33</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;&#10;[@(:include </string>
+ <string>:) &amp; error )&#10; {&#10; try&#10; {&#10; do_work();&#10; error = boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-9</id>
+ <id>-33</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> synopsis:)@]&#10;&#10;`#include &lt;(:link </string>
+ <string>:)();&#10; }&#10; catch(&#10; ... )&#10; {&#10; error = boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-5</id>
+ <id>-34</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;&#10;(:include </string>
+ <string>:)();&#10; }&#10; }@]&#10;&#10;In the above example, note that (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-5</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string> synopsis:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-45</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>5</size>
+ <id>-34</id>
+ </shared_ptr>
+ </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;E must be boost::(:link </string>
+ <string>:) captures the original type of the exception object. The exception can be thrown again using the (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-39</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:), or a type that derives (indirectly) from boost::(:link </string>
+ <string>:) function:&#10;&#10;[@// ...continued&#10;&#10;void&#10;work()&#10; {&#10; boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-33</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:).&#10;&#10;!!!!Effects:&#10;&#10;Equivalent to x &lt;&lt; v.(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html#accessing_elements|get:)&lt;0&gt;() &lt;&lt; ... &lt;&lt; v.(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html#accessing_elements|get:)&lt;N&gt;().&#10;&#10;!!!!Returns:&#10;&#10;x.&#10;&#10;(:include throws:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-46</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>11</size>
- <variant>2</variant>
- <string>(:auto !!:)&#10;&#10;All exception types that derive from boost::(:link </string>
+ <string>:) error;&#10; boost::(:link http://www.boost.org/doc/html/boost/thread.html|thread:) t( boost::(:link http://www.boost.org/libs/bind/bind.html|bind:)(worker_thread,boost::(:link http://www.boost.org/doc/html/ref.html|ref:)(error)) );&#10; t.(:link http://www.boost.org/doc/html/boost/thread.html|join:)();&#10; if( error )&#10; boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-39</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) can be used as type-safe containers of arbitrary data objects, while complying with the no-throw requirements (15.5.1) of the ANSI C++ standard for exception types.&#10;&#10;When exceptions derive from boost::(:link </string>
+ <string>:)(error);&#10; }@]&#10;&#10;Note that (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-34</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:), arbitrary data can be added to exception objects:&#10;&#10;*At the point of the throw;&#10;*At a later time as exceptions bubble up the call stack.&#10;&#10;(:include </string>
+ <string>:) could fail to copy the original exception object in the following cases:&#10;&#10;* if there is not enough memory, in which case the returned (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-27</id>
+ <id>-33</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;(:include </string>
+ <string>:) points to an instance of std::bad_alloc, or&#10;* if (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-48</id>
+ <id>-37</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;(:include </string>
+ <string>:) was not used in the throw-expression passed to the original throw statement and the current implementation does not have the necessary compiler-specific support to copy the exception automatically, in which case the returned (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-38</id>
+ <id>-33</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-47</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>13</size>
- <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;Class boost::(:link </string>
+ <string>:) points to an instance of (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-28</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) is designed to be used as a universal base for user-defined exception types.&#10;&#10;An object of any type deriving from boost::(:link </string>
+ <string>:).&#10;&#10;Regardless, the use of (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-34</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) can store data of arbitrary types, using the (:link </string>
+ <string>:) and (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-52</id>
+ <id>-39</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) wrapper and (:link </string>
+ <string>:) in the above examples is well-formed.&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-41</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:auto !!:)&#10;&#10;(:pagelist fmt=&quot;index&quot; tags=&quot;function&quot;:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-42</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>3</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Effects:&#10;&#10;Stores a copy of v in the </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-56</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> mod=&quot;/&quot;:).&#10;&#10;To retrieve data from a boost::(:link </string>
+ <string> object.&#10;&#10;(:include throws:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-43</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>5</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;Exception types should use virtual inheritance when deriving from other exception types. This insight is due to Andrew Koenig. Using virtual inheritance prevents ambiguity problems in the exception handler:&#10;&#10;[@#include &lt;iostream&gt;&#10;struct my_exc1 : std::exception { char const* what() const throw(); };&#10;struct my_exc2 : std::exception { char const* what() const throw(); };&#10;struct your_exc3 : my_exc1, my_exc2 {};&#10;&#10;int&#10;main()&#10; {&#10; try { throw your_exc3(); }&#10; catch(std::exception const&amp; e) {}&#10; catch(...) { std::cout &lt;&lt; &quot;whoops!&quot; &lt;&lt; std::endl; }&#10; }@]&#10;&#10;The program above outputs &quot;whoops!&quot; because the conversion to std::exception is ambiguous.&#10;&#10;The overhead introduced by virtual inheritance is always negligible in the context of exception handling. Note that virtual bases are initialized directly by the constructor of the most-derived-type (the type pass
ed to the throw statement, in case of exceptions.) However, typically this detail is of no concern when boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -7679,279 +7644,240 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) object, use the (:link </string>
+ <string>:) is used, because it enables exception types to be trivial structs with no members (there&apos;s nothing to initialize.) See (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-57</id>
+ <id>-8</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) function template.&#10;</string>
+ <string> mod=&quot;w&quot;:).&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-48</id>
+ <id>-44</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>19</size>
+ <size>45</size>
                                                                                                         <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;Sometimes the throw site does not have all the information that is needed at the catch site to make sense of what went wrong. Let&apos;s say we have an exception type file_read_error, which takes a file name in its constructor. Consider the following function:&#10;&#10;[@void&#10;file_read( FILE * f, void * buffer, size_t size )&#10; {&#10; if( size!=fread(buffer,1,size,f) )&#10; throw file_read_error(????);&#10; }@]&#10;&#10;How can the file_read function pass a file name to the exception type constructor? All it has is a FILE handle.&#10;&#10;Using boost::(:link </string>
+ <string>!!Synopsis&#10;&#10;List of documented definitions, declarations and includes by header file:&#10;&#10;`#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-49</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) allows us to free the file_read function from the burden of storing the file name in exceptions it throws:&#10;&#10;[@#include &lt;(:link </string>
+ <string>:)&gt;&#10;&#10;[@(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-5</id>
+ <id>-49</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;#include &lt;stdio.h&gt;&#10;#include &lt;errno.h&gt;&#10;&#10;typedef boost::(:link </string>
+ <string> synopsis:)@]&#10;&#10;`#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-52</id>
+ <id>-7</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;struct tag_errno,int&gt; errno_info;&#10;&#10;class file_read_error: public boost::(:link </string>
+ <string>:)&gt;&#10;&#10;[@(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-7</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) { };&#10;&#10;void&#10;file_read( FILE * f, void * buffer, size_t size )&#10; {&#10; if( size!=fread(buffer,1,size,f) )&#10; throw file_read_error() &lt;&lt; errno_info(errno);&#10; }@]&#10;&#10;If file_read detects a failure, it throws an exception which contains the information that is available at the time, namely the errno. Other relevant information, such as the file name, can be added in a context higher up the call stack, where it is known naturally:&#10;&#10;[@#include &lt;(:link </string>
+ <string> synopsis:)@]&#10;&#10;`#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-5</id>
+ <id>-11</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;#include &lt;boost/shared_ptr.hpp&gt;&#10;#include &lt;stdio.h&gt;&#10;#include &lt;string&gt;&#10;&#10;typedef boost::(:link </string>
+ <string>:)&gt;&#10;&#10;[@(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-52</id>
+ <id>-11</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;struct tag_file_name,std::string&gt; file_name_info;&#10;&#10;boost::shared_ptr&lt;FILE&gt; file_open( char const * file_name, char const * mode );&#10;void file_read( FILE * f, void * buffer, size_t size );&#10;&#10;void&#10;parse_file( char const * file_name )&#10; {&#10; boost::shared_ptr&lt;FILE&gt; f = file_open(file_name,&quot;rb&quot;);&#10; assert(f);&#10; try&#10; {&#10; char buf[1024];&#10; file_read( f.get(), buf, sizeof(buf) );&#10; }&#10; catch(&#10; boost::(:link </string>
+ <string> synopsis:)@]&#10;&#10;`#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-9</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) &amp; e )&#10; {&#10; e &lt;&lt; file_name_info(file_name);&#10; throw;&#10; }&#10; }@]&#10;&#10;The above function is (almost) exception-neutral -- if an exception is emitted by any function call within the try block, parse_file does not need to do any real work, but it intercepts any boost::(:link </string>
+ <string>:)&gt;&#10;&#10;[@(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-9</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) object, stores the file name, and re-throws using a throw-expression with no operand (15.1.6). The rationale for catching any boost::(:link </string>
+ <string> synopsis:)@]&#10;&#10;`#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-24</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) object is that the file name is relevant to any failure that occurs in parse_file, &apos;&apos;even if the failure is unrelated to file I/O&apos;&apos;.&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-49</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:auto !!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-50</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;This function must not be called outside of a catch block.&#10;&#10;!!!!Returns:&#10;&#10;A pointer of type E to the current exception object, or null if the current exception object can not be converted to E *.&#10;&#10;!!!!Throws:&#10;&#10;Nothing.&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-51</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>5</size>
- <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Effects:&#10;&#10;As if&#10;&#10;[@try&#10; {&#10; throw </string>
+ <string>:)&gt;&#10;&#10;[@(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-37</id>
+ <id>-24</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>(e);&#10; }&#10;catch(...)&#10; {&#10; return (:link </string>
+ <string> synopsis:)@]&#10;&#10;`#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-34</id>
+ <id>-58</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)();&#10; }@]&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-52</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>37</size>
- <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;T must have accessible copy constructor and must not be a reference (there is no requirement that T&apos;s copy constructor does not throw.)&#10;&#10;!!!!Description:&#10;&#10;This class template is used to associate a Tag type with a value type T. Objects of type (:link </string>
+ <string>:)&gt;&#10;&#10;[@(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-52</id>
+ <id>-58</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;Tag,T&gt; can be passed to (:link </string>
+ <string> synopsis:)@]&#10;&#10;`#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-56</id>
+ <id>-13</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> mod=&quot;/&quot;:) to be stored in objects of type boost::(:link </string>
+ <string>:)&gt;&#10;&#10;[@(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-13</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:).&#10;&#10;!!!!Usage:&#10;&#10;The header &lt;(:link </string>
+ <string> synopsis:)@]&#10;&#10;`#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-11</id>
+ <id>-12</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt; provides a declaration of the (:link </string>
+ <string>:)&gt;&#10;&#10;[@(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-52</id>
+ <id>-12</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) template, which is sufficient for the purpose of typedefing an instance for specific Tag and T, for example:&#10;&#10;[@#include &lt;(:link </string>
+ <string> synopsis:)@]&#10;&#10;`#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-11</id>
+ <id>-6</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;&#10;struct tag_errno;&#10;typedef boost::(:link </string>
+ <string>:)&gt;&#10;&#10;[@(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-52</id>
+ <id>-6</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;tag_errno,int&gt; errno_info;@]&#10;&#10;Or, the shorter equivalent:&#10;&#10;[@#include &lt;(:link </string>
+ <string> synopsis:)@]&#10;&#10;`#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-11</id>
+ <id>-5</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;&#10;typedef boost::(:link </string>
+ <string>:)&gt;&#10;&#10;[@(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-52</id>
+ <id>-5</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;struct tag_errno,int&gt; errno_info;@]&#10;&#10;This errno_info typedef can be passed to (:link </string>
+ <string> synopsis:)@]&#10;&#10;`#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-56</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> mod=&quot;/&quot;:) (#include &lt;(:link </string>
+ <string>:)&gt;&#10;&#10;(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-15</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt; first) to store an int named tag_errno in exceptions of types that derive from boost::(:link </string>
+ <string> synopsis:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-45</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>5</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;E must be boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -7960,168 +7886,181 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:):&#10;&#10;[@throw file_read_error() (:link </string>
+ <string>:), or a type that derives (indirectly) from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-56</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>|&lt;&lt;:) errno_info(errno);@]&#10;&#10;It can also be passed to (:link </string>
+ <string>:).&#10;&#10;!!!!Effects:&#10;&#10;Equivalent to x &lt;&lt; v.(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html#accessing_elements|get:)&lt;0&gt;() &lt;&lt; ... &lt;&lt; v.(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html#accessing_elements|get:)&lt;N&gt;().&#10;&#10;!!!!Returns:&#10;&#10;x.&#10;&#10;(:include throws:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-46</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>11</size>
+ <variant>2</variant>
+ <string>(:auto !!:)&#10;&#10;All exception types that derive from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-57</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) (#include &lt;(:link </string>
+ <string>:) can be used as type-safe containers of arbitrary data objects, while complying with the no-throw requirements (15.5.1) of the ANSI C++ standard for exception types.&#10;&#10;When exceptions derive from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-53</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt; first) to retrieve the tag_errno int from a boost::(:link </string>
+ <string>:), arbitrary data can be added to exception objects:&#10;&#10;*At the point of the throw;&#10;*At a later time as exceptions bubble up the call stack.&#10;&#10;(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-27</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:):&#10;&#10;[@catch( boost::(:link </string>
+ <string>:)&#10;(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-48</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) &amp; x )&#10; {&#10; if( int const * e=boost::(:link </string>
+ <string>:)&#10;(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-57</id>
+ <id>-38</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;errno_info&gt;(x) )&#10; ....&#10; }@]&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-53</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:auto !!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
+ <string>:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-54</id>
+ <id>-47</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>69</size>
+ <size>13</size>
                                                                                                         <variant>2</variant>
- <string>!!Introduction&#10;&#10;The purpose of Boost Exception is to ease the design of exception class hierarchies and to help write exception handling and error reporting code.&#10;&#10;It supports transporting of arbitrary data to the catch site, which is otherwise tricky due to the no-throw requirements (15.5.1) for exception types. Data can be added to any exception object, either directly in the throw-expression (15.1), or at a later time as the exception object propagates up the call stack.&#10;&#10;The ability to add data to exception objects after they have been passed to throw is important, because often some of the information needed to handle an exception is unavailable in the context where the failure is detected. &#10;&#10;Boost Exception also supports (:link http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html|N2179:)-style (:link </string>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;Class boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-60</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>|copying:) of exception objects, implemented non-intrusively and automatically by the boost::(:link </string>
+ <string>:) is designed to be used as a universal base for user-defined exception types.&#10;&#10;An object of any type deriving from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-35</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) function.&#10;&#10;!!Contents&#10;&#10;#(:link </string>
+ <string>:) can store data of arbitrary types, using the (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-19</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;#Tutorial&#10;##(:link </string>
+ <string>:) wrapper and (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-46</id>
+ <id>-56</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> mod=&quot;w&quot;:)&#10;##(:link </string>
+ <string> mod=&quot;/&quot;:).&#10;&#10;To retrieve data from a boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-20</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> mod=&quot;w&quot;:)&#10;##(:link </string>
+ <string>:) object, use the (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-60</id>
+ <id>-57</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> mod=&quot;w&quot;:)&#10;##(:link </string>
+ <string>:) function template.&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-48</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>19</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;Sometimes the throw site does not have all the information that is needed at the catch site to make sense of what went wrong. Let&apos;s say we have an exception type file_read_error, which takes a file name in its constructor. Consider the following function:&#10;&#10;[@void&#10;file_read( FILE * f, void * buffer, size_t size )&#10; {&#10; if( size!=fread(buffer,1,size,f) )&#10; throw file_read_error(????);&#10; }@]&#10;&#10;How can the file_read function pass a file name to the exception type constructor? All it has is a FILE handle.&#10;&#10;Using boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-12</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> mod=&quot;w&quot;:)&#10;##(:link </string>
+ <string>:) allows us to free the file_read function from the burden of storing the file name in exceptions it throws:&#10;&#10;[@#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-43</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> mod=&quot;w&quot;:)&#10;##(:link </string>
+ <string>:)&gt;&#10;#include &lt;stdio.h&gt;&#10;#include &lt;errno.h&gt;&#10;&#10;typedef boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-29</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> mod=&quot;w&quot;:)&#10;#Documentation&#10;##Class (:link </string>
+ <string>:)&lt;struct tag_errno,int&gt; errno_info;&#10;&#10;class file_read_error: public boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -8130,312 +8069,391 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;##Throwing Exceptions&#10;###(:link </string>
+ <string>:) { };&#10;&#10;void&#10;file_read( FILE * f, void * buffer, size_t size )&#10; {&#10; if( size!=fread(buffer,1,size,f) )&#10; throw file_read_error() &lt;&lt; errno_info(errno);&#10; }@]&#10;&#10;If file_read detects a failure, it throws an exception which contains the information that is available at the time, namely the errno. Other relevant information, such as the file name, can be added in a context higher up the call stack, where it is known naturally:&#10;&#10;[@#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-32</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;###(:link </string>
+ <string>:)&gt;&#10;#include &lt;boost/shared_ptr.hpp&gt;&#10;#include &lt;stdio.h&gt;&#10;#include &lt;string&gt;&#10;&#10;typedef boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-35</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;##Transporting of Arbitrary Data to the Catch Site&#10;###(:link </string>
+ <string>:)&lt;struct tag_file_name,std::string&gt; file_name_info;&#10;&#10;boost::shared_ptr&lt;FILE&gt; file_open( char const * file_name, char const * mode );&#10;void file_read( FILE * f, void * buffer, size_t size );&#10;&#10;void&#10;parse_file( char const * file_name )&#10; {&#10; boost::shared_ptr&lt;FILE&gt; f = file_open(file_name,&quot;rb&quot;);&#10; assert(f);&#10; try&#10; {&#10; char buf[1024];&#10; file_read( f.get(), buf, sizeof(buf) );&#10; }&#10; catch(&#10; boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-52</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;###(:link </string>
+ <string>:) &amp; e )&#10; {&#10; e &lt;&lt; file_name_info(file_name);&#10; throw;&#10; }&#10; }@]&#10;&#10;The above function is (almost) exception-neutral -- if an exception is emitted by any function call within the try block, parse_file does not need to do any real work, but it intercepts any boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-56</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;###(:link </string>
+ <string>:) object, stores the file name, and re-throws using a throw-expression with no operand (15.1.6). The rationale for catching any boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-45</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;###(:link </string>
+ <string>:) object is that the file name is relevant to any failure that occurs in parse_file, &apos;&apos;even if the failure is unrelated to file I/O&apos;&apos;.&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-49</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:auto !!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-50</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;This function must not be called outside of a catch block.&#10;&#10;!!!!Returns:&#10;&#10;A pointer of type E to the current exception object, or null if the current exception object can not be converted to E *.&#10;&#10;!!!!Throws:&#10;&#10;Nothing.&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-51</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>5</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Effects:&#10;&#10;As if&#10;&#10;[@try&#10; {&#10; throw </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-57</id>
+ <id>-37</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;###(:link </string>
+ <string>(e);&#10; }&#10;catch(...)&#10; {&#10; return (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-26</id>
+ <id>-34</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;##(:link http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html|N2179:) Transporting of Exceptions between Threads&#10;###(:link </string>
+ <string>:)();&#10; }@]&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-52</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>37</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;T must have accessible copy constructor and must not be a reference (there is no requirement that T&apos;s copy constructor does not throw.)&#10;&#10;!!!!Description:&#10;&#10;This class template is used to associate a Tag type with a value type T. Objects of type (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-33</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;###(:link </string>
+ <string>:)&lt;Tag,T&gt; can be passed to (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-37</id>
+ <id>-56</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;###(:link </string>
+ <string> mod=&quot;/&quot;:) to be stored in objects of type boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-34</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;###(:link </string>
+ <string>:).&#10;&#10;!!!!Usage:&#10;&#10;The header &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-51</id>
+ <id>-7</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;###(:link </string>
+ <string>:)&gt; provides a declaration of the (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-39</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;###(:link </string>
+ <string>:) template, which is sufficient for the purpose of typedefing an instance for specific Tag and T, for example:&#10;&#10;[@#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-28</id>
+ <id>-7</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;##Diagnostic Information&#10;###(:link </string>
+ <string>:)&gt;&#10;&#10;struct tag_errno;&#10;typedef boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-30</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;###(:link </string>
+ <string>:)&lt;tag_errno,int&gt; errno_info;@]&#10;&#10;Or, the shorter equivalent:&#10;&#10;[@#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-61</id>
+ <id>-7</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;##(:link </string>
+ <string>:)&gt;&#10;&#10;typedef boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-50</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;#API&#10;##(:link </string>
+ <string>:)&lt;struct tag_errno,int&gt; errno_info;@]&#10;&#10;This errno_info typedef can be passed to (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-56</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> mod=&quot;/&quot;:) (#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-44</id>
+ <id>-11</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;##(:link </string>
+ <string>:)&gt; first) to store an int named tag_errno in exceptions of types that derive from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-23</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;##(:link </string>
+ <string>:):&#10;&#10;[@throw file_read_error() (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-24</id>
+ <id>-56</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;##(:link </string>
+ <string>|&lt;&lt;:) errno_info(errno);@]&#10;&#10;It can also be passed to (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-41</id>
+ <id>-57</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;##(:link </string>
+ <string>:) (#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-14</id>
+ <id>-53</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;##(:link </string>
+ <string>:)&gt; first) to retrieve the tag_errno int from a boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-31</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> mod=&quot;w&quot;:)&#10;#(:link </string>
+ <string>:):&#10;&#10;[@catch( boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-21</id>
+ <id>-47</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> mod=&quot;w&quot;:)&#10;#(:link </string>
+ <string>:) &amp; x )&#10; {&#10; if( int const * e=boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-18</id>
+ <id>-57</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> mod=&quot;w&quot;:)&#10;&#10;!!!Acknowledgements&#10;&#10;Thanks to Peter Dimov for his continuing help. Also thanks to Tobias Schwinger, Tom Brinkman, Pavel Vozenilek and everyone who participated in the review process.&#10;</string>
+ <string>:)&lt;errno_info&gt;(x) )&#10; ....&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-55</id>
+ <id>-53</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>5</size>
+ <size>1</size>
                                                                                                         <variant>2</variant>
- <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Description:&#10;&#10;Returns a const reference to the copy of the value passed to (:link </string>
+ <string>(:auto !!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-54</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>69</size>
+ <variant>2</variant>
+ <string>!!Introduction&#10;&#10;The purpose of Boost Exception is to ease the design of exception class hierarchies and to help write exception handling and error reporting code.&#10;&#10;It supports transporting of arbitrary data to the catch site, which is otherwise tricky due to the no-throw requirements (15.5.1) for exception types. Data can be added to any exception object, either directly in the throw-expression (15.1), or at a later time as the exception object propagates up the call stack.&#10;&#10;The ability to add data to exception objects after they have been passed to throw is important, because often some of the information needed to handle an exception is unavailable in the context where the failure is detected. &#10;&#10;Boost Exception also supports (:link http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html|N2179:)-style (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-52</id>
+ <id>-60</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&apos;s constructor stored in the (:link </string>
+ <string>|copying:) of exception objects, implemented non-intrusively and automatically by the boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-52</id>
+ <id>-35</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) object.&#10;&#10;!!!!Throws:&#10;&#10;Nothing.&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-21</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>65</size>
+ <string>:) function.&#10;&#10;!!Contents&#10;&#10;#(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-15</id>
+ </shared_ptr>
+ </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>(:auto !!:)&#10;&#10;!!!Why doesn&apos;t boost::exception derive from std::exception?&#10;&#10;Despite that (:link </string>
+ <string>:)&#10;#Tutorial&#10;##(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-43</id>
+ <id>-46</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>|virtual inheritance should be used in deriving from base exception types:), many programmers fail to follow this principle when deriving from std::exception. If boost::(:link </string>
+ <string> mod=&quot;w&quot;:)&#10;##(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-16</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) derives from std::exception, using the (:link </string>
+ <string> mod=&quot;w&quot;:)&#10;##(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-26</id>
+ <id>-60</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) function with such user-defined types would introduce dangerous ambiguity which would break all catch(std::exception &amp;) statements.&#10;&#10;Of course, boost::(:link </string>
+ <string> mod=&quot;w&quot;:)&#10;##(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-8</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) should not be used to replace std::exception as a base type in exception type hierarchies. Instead, it should be included as a virtual base, in addition to std::exception (which should also be derived virtually.)&#10;&#10;!!!Why is boost::exception abstract?&#10;&#10;To prevent exception-neutral contexts from erroneously erasing the type of the original exception when adding (:link </string>
+ <string> mod=&quot;w&quot;:)&#10;##(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-52</id>
+ <id>-43</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) to an active exception object:&#10;&#10;[@catch( boost::(:link </string>
+ <string> mod=&quot;w&quot;:)&#10;##(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-29</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> mod=&quot;w&quot;:)&#10;#Documentation&#10;##Class (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -8444,34 +8462,34 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) &amp; e )&#10; {&#10; e (:link </string>
+ <string>:)&#10;##Throwing Exceptions&#10;###(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-56</id>
+ <id>-32</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>|&lt;&lt;:) foo_info(foo);&#10; throw e; //Compile error: boost::(:link </string>
+ <string>:)&#10;###(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-35</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) is abstract&#10; }@]&#10;&#10;The correct code is:&#10;&#10;[@catch( boost::(:link </string>
+ <string>:)&#10;##Transporting of Arbitrary Data to the Catch Site&#10;###(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) &amp; e )&#10; {&#10; e (:link </string>
+ <string>:)&#10;###(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -8480,205 +8498,218 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>|&lt;&lt;:) foo_info(foo);&#10; throw; //Okay, re-throwing the original exception object.&#10; }@]&#10;&#10;!!!What is the space overhead of the boost::exception base class?&#10;&#10;The space overhead for the boost::exception data members is negligible in the context of exception handling. Throwing objects that derive from boost::(:link </string>
+ <string>:)&#10;###(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-45</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) does not by itself cause dynamic memory allocations.&#10;&#10;Deriving from boost::(:link </string>
+ <string>:)&#10;###(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-57</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) enables any data to be added to exceptions, which usually does allocate memory. However, this memory is reclaimed when the exception has been handled, and since typically user code does not allocate memory during the unrolling of the stack, adding error info to exceptions should not cause memory fragmentation.&#10;&#10;!!!Should I use boost::throw_exception or BOOST_THROW_EXCEPTION or just throw?&#10;&#10;The benefit of calling boost::(:link </string>
+ <string>:)&#10;###(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-35</id>
+ <id>-26</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) instead of using throw directly is that it ensures that the emitted exception derives from boost::(:link </string>
+ <string>:)&#10;##(:link http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html|N2179:) Transporting of Exceptions between Threads&#10;###(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-33</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) and that it is compatible with boost::(:link </string>
+ <string>:)&#10;###(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-34</id>
+ <id>-37</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:).&#10;&#10;The (:link </string>
+ <string>:)&#10;###(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-32</id>
+ <id>-34</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) macro also results in a call to boost::(:link </string>
+ <string>:)&#10;###(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-35</id>
+ <id>-51</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:), but in addition it records in the exception object the __FILE__ and __LINE__ of the throw, as well as the pretty name of the function that throws. This has virtually no overhead, yet enables boost::(:link </string>
+ <string>:)&#10;###(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-30</id>
+ <id>-39</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) to compose a more useful, if not user-friendly message.&#10;&#10;Typical use of boost::(:link </string>
+ <string>:)&#10;###(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-30</id>
+ <id>-28</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) is:&#10;&#10;[@catch( boost::exception &amp; e )&#10; {&#10; std::cerr &lt;&lt; &quot;OMG!&quot; &lt;&lt; boost::diagnostic_information(e);&#10; }&#10;catch( ... )&#10; {&#10; std::cerr &lt;&lt; &quot;OMG!!!&quot;;&#10; }@]&#10;&#10;This is a possible message it may display, the first line is only possible if (:link </string>
+ <string>:)&#10;##Diagnostic Information&#10;###(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-32</id>
+ <id>-30</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) is used:&#10;&#10;[@example_io.cpp(83): Throw in function void parse_file(const char *)&#10;Dynamic exception type: class file_open_error&#10;std::exception::what: example_io error&#10;[struct tag_errno_code *] = 2, OS says &quot;No such file or directory&quot;&#10;[struct tag_file_name *] = tmp1.xml&#10;[struct tag_function *] = fopen&#10;[struct tag_open_mode *] = rb@]&#10;!!!Why is boost::exception integrated in boost::throw_exception?&#10;&#10;The boost::(:link </string>
+ <string>:)&#10;###(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-35</id>
+ <id>-61</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) function predates the Boost Exception library and there has been some concern about its current behavior of injecting boost::(:link </string>
+ <string>:)&#10;##(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-50</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) as a base of any exception passed to boost::(:link </string>
+ <string>:)&#10;#API&#10;##(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-35</id>
+ <id>-44</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:). Such concerns are dictated by the typical strict interpretation of a common principle in C and C++, that users only pay for features they actually use.&#10;&#10;The problem is that users of Boost Exception can&apos;t by themselves cause a library to throw types that derive from boost::(:link </string>
+ <string>:)&#10;##(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-19</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:), and without this they can&apos;t use any of the Boost Exception facilities.&#10;&#10;For example, if a user wants to use Boost Serialization in a separate thread, it is desirable to be able to transport exceptions emitted by that library into the main thread where they can be analyzed to generate a user-friendly message. This can be easily achieved using boost::(:link </string>
+ <string>:)&#10;##(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-33</id>
+ <id>-20</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:), but this requires that Boost Serialization throws exceptions using boost::(:link </string>
+ <string>:)&#10;##(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-37</id>
+ <id>-41</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:). If Boost Serialization calls boost::(:link </string>
+ <string>:)&#10;##(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-35</id>
+ <id>-10</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) to throw, this behavior happens automatically and transparently.&#10;&#10;The cost of this integration is:&#10;&#10;* In terms of space: a pointer and 3 ints are added to the static size of exception objects.&#10;* In terms of speed: the pointer is initialized to null at the point of the throw.&#10;* In terms of coupling: about 400 self-contained lines of C++ with no external includes.&#10;&#10;!!!Why use operator&lt;&lt; overload for adding info to exceptions?&#10;&#10;Before throwing an object of type that derives from boost::(:link </string>
+ <string>:)&#10;##(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-47</id>
+ <id>-31</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:), it is often desirable to add one or more (:link </string>
+ <string> mod=&quot;w&quot;:)&#10;#(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-52</id>
+ <id>-17</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) objects in it. The syntactic sugar provided by (:link </string>
+ <string> mod=&quot;w&quot;:)&#10;#(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-56</id>
+ <id>-14</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) allows this to be done directly in a throw expression:&#10;&#10;[@throw error() (:link </string>
+ <string> mod=&quot;w&quot;:)&#10;&#10;!!!Acknowledgements&#10;&#10;Thanks to Peter Dimov for his continuing help. Also thanks to Tobias Schwinger, Tom Brinkman, Pavel Vozenilek and everyone who participated in the review process.&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-55</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>5</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Description:&#10;&#10;Returns a const reference to the copy of the value passed to (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-56</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>|&lt;&lt;:) foo_info(foo) (:link </string>
+ <string>:)&apos;s constructor stored in the (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-56</id>
+ <id>-52</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>|&lt;&lt;:) bar_info(bar);@]&#10;&#10;which saves typing compared to this possible alternative:&#10;&#10;[@error e;&#10;e.add(foo_info(foo));&#10;e.add(bar_info(bar));&#10;throw e;@]&#10;&#10;and looks better than something like:&#10;&#10;[@throw error().add(foo_info(foo)).add(bar_info(bar));@]&#10;</string>
+ <string>:) object.&#10;&#10;!!!!Throws:&#10;&#10;Nothing.&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -8883,7 +8914,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-25</id>
+ <id>-21</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -9131,7 +9162,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-22</id>
+ <id>-20</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -9142,7 +9173,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-23</id>
+ <id>-21</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -9153,7 +9184,18 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-20</id>
+ <id>-22</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-23</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -9476,18 +9518,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-52</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-53</id>
+ <id>-52</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -9498,7 +9529,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-54</id>
+ <id>-53</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -9509,7 +9540,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-55</id>
+ <id>-54</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -9520,7 +9551,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-21</id>
+ <id>-55</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -9619,7 +9650,7 @@
                                                                                                 <container>
                                                                                                         <size>1</size>
                                                                                                         <variant>2</variant>
- <string>[@(:include api:)@]&#10;</string>
+ <string>(:include api:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -9632,16 +9663,16 @@
                                                                                                 <container>
                                                                                                         <size>3</size>
                                                                                                         <variant>2</variant>
- <string>`#include &lt;(:link </string>
+ <string>[@#include &lt;</string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-15</id>
+ <id>-49</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;&#10;[@(:include decl:)@]&#10;</string>
+ <string>&gt;&#10;&#10;namespace&#10;boost&#10; {&#10;(:include api pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -9652,6 +9683,30 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
+ <size>1</size>
+ <variant>2</variant>
+ <string>[@namespace&#10;boost&#10; {&#10;(:include api pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-8</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-9</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
                                                                                                         <size>3</size>
                                                                                                         <variant>2</variant>
                                                                                                         <string>[@#include &lt;</string>
@@ -9659,18 +9714,18 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-49</id>
+ <id>-11</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>&gt;&#10;&#10;namespace&#10;boost&#10; {&#10;(:include api pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
+ <string>&gt;&#10;#include &lt;boost/tuple/tuple.hpp&gt;&#10;&#10;namespace&#10;boost&#10; {&#10;(:include api pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-8</id>
+ <id>-10</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -9681,26 +9736,35 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-9</id>
+ <id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>1</size>
+ <size>3</size>
                                                                                                         <variant>2</variant>
- <string>(:include api:)&#10;</string>
+ <string>[@#include &lt;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-49</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;&#10;&#10;namespace&#10;boost&#10; {&#10;(:include api pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-10</id>
+ <id>-12</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
                                                                                                         <size>3</size>
                                                                                                         <variant>2</variant>
- <string>[@#include &lt;</string>
+ <string>[@#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -9709,14 +9773,14 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>&gt;&#10;&#10;namespace&#10;boost&#10; {&#10;(:include api pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
+ <string>:)&gt;&#10;&#10;namespace&#10;boost&#10; {&#10;(:include api pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-11</id>
+ <id>-13</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -9729,7 +9793,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-12</id>
+ <id>-14</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -9740,29 +9804,18 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-13</id>
+ <id>-15</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>3</size>
- <variant>2</variant>
- <string>[@#include &lt;</string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-15</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>&gt;&#10;#include &lt;boost/tuple/tuple.hpp&gt;&#10;&#10;namespace&#10;boost&#10; {&#10;(:include api pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
+ <size>0</size>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-14</id>
+ <id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -9773,64 +9826,51 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-15</id>
+ <id>-17</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>3</size>
- <variant>2</variant>
- <string>[@#include &lt;(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-49</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&gt;&#10;&#10;namespace&#10;boost&#10; {&#10;(:include api pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
+ <size>0</size>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-16</id>
+ <id>-18</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
                                                                                                         <size>3</size>
                                                                                                         <variant>2</variant>
- <string>[@#include &lt;(:link </string>
+ <string>`#include &lt;</string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-49</id>
+ <id>-12</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;&#10;namespace&#10;boost&#10; {&#10;(:include api pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
+ <string>&gt;&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-17</id>
+ <id>-19</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>1</size>
- <variant>2</variant>
- <string>[@namespace&#10;boost&#10; {&#10;(:include api pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
+ <size>0</size>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-18</id>
+ <id>-20</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -9841,7 +9881,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-19</id>
+ <id>-21</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -9856,18 +9896,9 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>3</size>
- <variant>2</variant>
- <string>`#include &lt;</string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-16</id>
- </shared_ptr>
- </weak_ptr>
+ <size>1</size>
                                                                                                         <variant>2</variant>
- <string>&gt;&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
+ <string>[@(:include api:)@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -9878,18 +9909,18 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-20</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
+ <size>3</size>
+ <variant>2</variant>
+ <string>`#include &lt;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-11</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;&#10;&#10;[@(:include decl:)@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -9900,7 +9931,18 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>3</size>
+ <variant>2</variant>
+ <string>[@#include &lt;</string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-49</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>&gt;&#10;&#10;namespace&#10;boost&#10; {&#10;(:include api pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -9929,7 +9971,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-24</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -9962,7 +10004,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-16</id>
+ <id>-12</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -10028,7 +10070,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-9</id>
+ <id>-5</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -10050,7 +10092,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-16</id>
+ <id>-12</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -10072,7 +10114,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-16</id>
+ <id>-12</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -10094,7 +10136,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-9</id>
+ <id>-5</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -10127,7 +10169,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-10</id>
+ <id>-6</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -10160,7 +10202,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-16</id>
+ <id>-12</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -10204,7 +10246,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-15</id>
+ <id>-11</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -10248,7 +10290,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-13</id>
+ <id>-9</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -10336,7 +10378,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-17</id>
+ <id>-13</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -10358,7 +10400,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-16</id>
+ <id>-12</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -10380,7 +10422,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-15</id>
+ <id>-11</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -10426,7 +10468,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-15</id>
+ <id>-11</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -10437,17 +10479,6 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-21</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
                                                                                                                 <id>-56</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
@@ -10459,7 +10490,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-15</id>
+ <id>-11</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -10609,13 +10640,16 @@
                                                                         <id>-19</id>
                                                                 </shared_ptr>
                                                                 <shared_ptr>
- <id>-22</id>
+ <id>-20</id>
                                                                 </shared_ptr>
                                                                 <shared_ptr>
- <id>-23</id>
+ <id>-21</id>
                                                                 </shared_ptr>
                                                                 <shared_ptr>
- <id>-20</id>
+ <id>-22</id>
+ </shared_ptr>
+ <shared_ptr>
+ <id>-23</id>
                                                                 </shared_ptr>
                                                                 <shared_ptr>
                                                                         <id>-24</id>
@@ -10714,9 +10748,6 @@
                                                                         <id>-55</id>
                                                                 </shared_ptr>
                                                                 <shared_ptr>
- <id>-21</id>
- </shared_ptr>
- <shared_ptr>
                                                                         <id>-56</id>
                                                                 </shared_ptr>
                                                                 <shared_ptr>
@@ -10753,7 +10784,41 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-54</id>
+ <id>-54</id>
+ </shared_ptr>
+ </pair>
+ <pair>
+ <hook>
+ <stream_hook_path>
+ <container>
+ <size>0</size>
+ </container>
+ </stream_hook_path>
+ </hook>
+ <file>
+ <path>
+ <empty>1</empty>
+ </path>
+ </file>
+ <shared_ptr>
+ <id>-60</id>
+ </shared_ptr>
+ </pair>
+ <pair>
+ <hook>
+ <stream_hook_path>
+ <container>
+ <size>0</size>
+ </container>
+ </stream_hook_path>
+ </hook>
+ <file>
+ <path>
+ <empty>1</empty>
+ </path>
+ </file>
+ <shared_ptr>
+ <id>-46</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -10770,7 +10835,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-60</id>
+ <id>-14</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -10787,7 +10852,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-46</id>
+ <id>-24</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -10804,7 +10869,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-18</id>
+ <id>-6</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -10821,7 +10886,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-7</id>
+ <id>-15</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -10838,7 +10903,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-10</id>
+ <id>-43</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -10855,7 +10920,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-19</id>
+ <id>-8</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -10872,7 +10937,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-43</id>
+ <id>-17</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -10889,7 +10954,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-12</id>
+ <id>-41</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -10906,7 +10971,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-21</id>
+ <id>-19</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -10923,7 +10988,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-41</id>
+ <id>-20</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -10940,7 +11005,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-23</id>
+ <id>-10</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -10957,41 +11022,139 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-24</id>
+ <id>-44</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>0</size>
+ <size>1</size>
+ <strong>95AD55ACCB1C17C1DBA4C309BDFCBD4B66E52CD9A2F54FDAD2D642A00342D001</strong>
+ <weak>3194412598</weak>
+ <size>4599</size>
+ <position>323</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
- <empty>1</empty>
+ <empty>0</empty>
+ <string>../../../../boost/exception/diagnostic_information.hpp</string>
+ <type>0</type>
+ <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-14</id>
+ <id>-58</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>0</size>
+ <size>1</size>
+ <strong>21E8093D2AF6946EAE135823066EF38B9DC8870432B44C81E585FF63A72F9903</strong>
+ <weak>3352783584</weak>
+ <size>12170</size>
+ <position>323</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
- <empty>1</empty>
+ <empty>0</empty>
+ <string>../../../../boost/exception_ptr.hpp</string>
+ <type>0</type>
+ <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-44</id>
+ <id>-12</id>
+ </shared_ptr>
+ </pair>
+ <pair>
+ <hook>
+ <stream_hook_path>
+ <container>
+ <size>2</size>
+ <strong>CEB9022E39DA32E612158FF553D383E13D300D1202CEB754E28B716040EFC414</strong>
+ <weak>1114955626</weak>
+ <size>11770</size>
+ <position>723</position>
+ <strong>6B3B617AC518A2177BDB89656E726B4E4D79577E289130493A61BAE24FB64838</strong>
+ <weak>3173127726</weak>
+ <size>1101</size>
+ <position>2184</position>
+ </container>
+ </stream_hook_path>
+ </hook>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/exception_ptr.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ <shared_ptr>
+ <id>-28</id>
+ </shared_ptr>
+ </pair>
+ <pair>
+ <hook>
+ <stream_hook_path>
+ <container>
+ <size>2</size>
+ <strong>CEB9022E39DA32E612158FF553D383E13D300D1202CEB754E28B716040EFC414</strong>
+ <weak>1114955626</weak>
+ <size>11770</size>
+ <position>723</position>
+ <strong>E23085202D084CBB50F289988A6A592F06D923B77D0AB25D7A98A7188DF5BE3B</strong>
+ <weak>1414247481</weak>
+ <size>766</size>
+ <position>10094</position>
+ </container>
+ </stream_hook_path>
+ </hook>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/exception_ptr.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ <shared_ptr>
+ <id>-34</id>
+ </shared_ptr>
+ </pair>
+ <pair>
+ <hook>
+ <stream_hook_path>
+ <container>
+ <size>2</size>
+ <strong>CEB9022E39DA32E612158FF553D383E13D300D1202CEB754E28B716040EFC414</strong>
+ <weak>1114955626</weak>
+ <size>11770</size>
+ <position>723</position>
+ <strong>AF894656AC8CED6190EEEE08B051DBF2106A393E313BB5BB1C17D4808EFED761</strong>
+ <weak>1496105832</weak>
+ <size>1753</size>
+ <position>429</position>
+ </container>
+ </stream_hook_path>
+ </hook>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/exception_ptr.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ <shared_ptr>
+ <id>-33</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -10999,13 +11162,13 @@
                                                                                 <stream_hook_path>
                                                                                         <container>
                                                                                                 <size>2</size>
- <strong>7BD35FAECA8BDD2E78E08EB02CF7F36163AE21D6859C73267AC53A05E5797909</strong>
- <weak>2464409114</weak>
- <size>3681</size>
- <position>502</position>
- <strong>DBE4A27FCB9297C314B3F52A460B55A5540B2A3F173D48C8CD042388D19253E2</strong>
- <weak>263970566</weak>
- <size>3656</size>
+ <strong>CEB9022E39DA32E612158FF553D383E13D300D1202CEB754E28B716040EFC414</strong>
+ <weak>1114955626</weak>
+ <size>11770</size>
+ <position>723</position>
+ <strong>1516D0B7E11CBEB60CE4222565ACCAFF2E9857A8A505C1C26E2AE90087250581</strong>
+ <weak>3624753243</weak>
+ <size>279</size>
                                                                                                 <position>26</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
@@ -11013,13 +11176,69 @@
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception/diagnostic_information.hpp</string>
+ <string>../../../../boost/exception_ptr.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-30</id>
+ <id>-18</id>
+ </shared_ptr>
+ </pair>
+ <pair>
+ <hook>
+ <stream_hook_path>
+ <container>
+ <size>2</size>
+ <strong>CEB9022E39DA32E612158FF553D383E13D300D1202CEB754E28B716040EFC414</strong>
+ <weak>1114955626</weak>
+ <size>11770</size>
+ <position>723</position>
+ <strong>B20A3D4631F3B2415EED1888B65FA33D7AED20F86BE196159D9297AAED115787</strong>
+ <weak>3293519666</weak>
+ <size>117</size>
+ <position>11169</position>
+ </container>
+ </stream_hook_path>
+ </hook>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/exception_ptr.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ <shared_ptr>
+ <id>-39</id>
+ </shared_ptr>
+ </pair>
+ <pair>
+ <hook>
+ <stream_hook_path>
+ <container>
+ <size>2</size>
+ <strong>CEB9022E39DA32E612158FF553D383E13D300D1202CEB754E28B716040EFC414</strong>
+ <weak>1114955626</weak>
+ <size>11770</size>
+ <position>723</position>
+ <strong>0066D4E6E6B189906E6DE04F08509F3737511701A1B1355B37511EC18E8371F4</strong>
+ <weak>2078296250</weak>
+ <size>305</size>
+ <position>10862</position>
+ </container>
+ </stream_hook_path>
+ </hook>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/exception_ptr.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ <shared_ptr>
+ <id>-51</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -11067,107 +11286,115 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-8</id>
+ <id>-25</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>1</size>
- <strong>B26AA4D68CD040C376C32D7D469C926EC02DB8F76A3DA3275D14CCABCA02902C</strong>
- <weak>1262147856</weak>
- <size>4435</size>
- <position>323</position>
+ <size>2</size>
+ <strong>AED5E79246B32BDF0E5C6CD8BDDC3370FD0BA1EFE3D4CE76C4A6D36A123F2E20</strong>
+ <weak>228982966</weak>
+ <size>3918</size>
+ <position>518</position>
+ <strong>6E325144EF4F41FA3A225EB30729101382C4E99B3D6160E307311E4B4E641010</strong>
+ <weak>1097215175</weak>
+ <size>161</size>
+ <position>240</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception/diagnostic_information.hpp</string>
+ <string>../../../../boost/exception/info.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-58</id>
+ <id>-42</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>1</size>
- <strong>D9B8E6AA12A4F33953B1A961FA590C5A3840234B6531CA8C04AC985AD5800835</strong>
- <weak>2432554768</weak>
- <size>702</size>
- <position>408</position>
+ <size>2</size>
+ <strong>AED5E79246B32BDF0E5C6CD8BDDC3370FD0BA1EFE3D4CE76C4A6D36A123F2E20</strong>
+ <weak>228982966</weak>
+ <size>3918</size>
+ <position>518</position>
+ <strong>D31BCE814DF5B8B718E7EB67A194AD08EF716A26D422E436596ABA1F145007D8</strong>
+ <weak>4055211476</weak>
+ <size>525</size>
+ <position>3387</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../example/enable_error_info.cpp</string>
+ <string>../../../../boost/exception/info.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-20</id>
+ <id>-56</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>2</size>
- <strong>6FB85B536F965F137409D5B5D34786DCBF0B9957A7C251D271B717A1156B823D</strong>
- <weak>1090406464</weak>
- <size>362</size>
- <position>323</position>
- <strong>D16DAEA8B1792A019AF7FCA362FDC6EFD381AF4C43C076A01C029ECE51F994A6</strong>
- <weak>3172941848</weak>
- <size>330</size>
- <position>26</position>
+ <size>1</size>
+ <strong>D9B8E6AA12A4F33953B1A961FA590C5A3840234B6531CA8C04AC985AD5800835</strong>
+ <weak>2432554768</weak>
+ <size>702</size>
+ <position>408</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception/current_exception_cast.hpp</string>
+ <string>../../example/enable_error_info.cpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-50</id>
+ <id>-16</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>1</size>
- <strong>ACBC114551B7A04441A0452AB97D25519D6D2AE97DA6C5DDBC2E7C4B9002F847</strong>
- <weak>4238517159</weak>
- <size>11368</size>
+ <size>2</size>
+ <strong>6FB85B536F965F137409D5B5D34786DCBF0B9957A7C251D271B717A1156B823D</strong>
+ <weak>1090406464</weak>
+ <size>362</size>
                                                                                                 <position>323</position>
+ <strong>D16DAEA8B1792A019AF7FCA362FDC6EFD381AF4C43C076A01C029ECE51F994A6</strong>
+ <weak>3172941848</weak>
+ <size>330</size>
+ <position>26</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception_ptr.hpp</string>
+ <string>../../../../boost/exception/current_exception_cast.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-16</id>
+ <id>-50</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -11202,48 +11429,28 @@
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>1</size>
- <strong>7116AEECEA666794E31DC99390ADEC1BA6AF74B2398067A0739767B4B76FA97A</strong>
- <weak>4128134227</weak>
- <size>307</size>
- <position>302</position>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>0</empty>
- <string>../../example/logging.cpp</string>
- <type>0</type>
- <base>0</base>
- </path>
- </file>
- <shared_ptr>
- <id>-29</id>
- </shared_ptr>
- </pair>
- <pair>
- <hook>
- <stream_hook_path>
- <container>
- <size>1</size>
- <strong>F647827E95C64B626A8E3751AD4E4D21237DD17482EEA6DB93A16A2C6AC79E87</strong>
- <weak>527078204</weak>
- <size>446</size>
- <position>227</position>
+ <size>2</size>
+ <strong>02F77B8305279514F37A75FA6454AE750E04E7AA7934D395EFB52BCC7642965E</strong>
+ <weak>430535365</weak>
+ <size>3379</size>
+ <position>560</position>
+ <strong>D08B74734CDA5115D9E47783E2994C2836BE241FB25E589BB4C67F2596727C03</strong>
+ <weak>24341149</weak>
+ <size>3347</size>
+ <position>26</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception.hpp</string>
+ <string>../../../../boost/exception/diagnostic_information.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-5</id>
+ <id>-30</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -11251,55 +11458,51 @@
                                                                                 <stream_hook_path>
                                                                                         <container>
                                                                                                 <size>2</size>
- <strong>1D3204D3ADDAB7AA716BEA1489EA852A9D6B5C110243364F6931FEF1CC2E5F88</strong>
- <weak>422052608</weak>
- <size>3923</size>
- <position>518</position>
- <strong>6E325144EF4F41FA3A225EB30729101382C4E99B3D6160E307311E4B4E641010</strong>
- <weak>1097215175</weak>
- <size>161</size>
- <position>240</position>
+ <strong>D57BF77EE44CD2755E24A56DDC3E159716D04A7ABE009AE977D4926EFEC00F73</strong>
+ <weak>2498368808</weak>
+ <size>973</size>
+ <position>3941</position>
+ <strong>9432C669E21C649A86AC6DC5A34275B483A7D2D38118A462DF1C1CD7BBE5ED51</strong>
+ <weak>2535426829</weak>
+ <size>441</size>
+ <position>110</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception/info.hpp</string>
+ <string>../../../../boost/exception/diagnostic_information.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-42</id>
+ <id>-61</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>2</size>
- <strong>1D3204D3ADDAB7AA716BEA1489EA852A9D6B5C110243364F6931FEF1CC2E5F88</strong>
- <weak>422052608</weak>
- <size>3923</size>
- <position>518</position>
- <strong>D31BCE814DF5B8B718E7EB67A194AD08EF716A26D422E436596ABA1F145007D8</strong>
- <weak>4055211476</weak>
- <size>525</size>
- <position>3392</position>
+ <size>1</size>
+ <strong>7116AEECEA666794E31DC99390ADEC1BA6AF74B2398067A0739767B4B76FA97A</strong>
+ <weak>4128134227</weak>
+ <size>307</size>
+ <position>302</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception/info.hpp</string>
+ <string>../../example/logging.cpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-56</id>
+ <id>-29</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -11307,23 +11510,23 @@
                                                                                 <stream_hook_path>
                                                                                         <container>
                                                                                                 <size>1</size>
- <strong>D10E536B909EFFF78FB09E6242AEC7C74ACDD75AE7DF32B45870422B752E5D8E</strong>
- <weak>1903336130</weak>
- <size>557</size>
- <position>382</position>
+ <strong>F647827E95C64B626A8E3751AD4E4D21237DD17482EEA6DB93A16A2C6AC79E87</strong>
+ <weak>527078204</weak>
+ <size>446</size>
+ <position>227</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../example/error_info_1.cpp</string>
+ <string>../../../../boost/exception.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-27</id>
+ <id>-22</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -11331,23 +11534,23 @@
                                                                                 <stream_hook_path>
                                                                                         <container>
                                                                                                 <size>1</size>
- <strong>A449DE2B3A2CDAE9DD932C06D224B3E07C95EBACBB4EA5890CA4CCF2DC74A693</strong>
- <weak>1718307056</weak>
- <size>4118</size>
- <position>323</position>
+ <strong>D10E536B909EFFF78FB09E6242AEC7C74ACDD75AE7DF32B45870422B752E5D8E</strong>
+ <weak>1903336130</weak>
+ <size>557</size>
+ <position>382</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception/info.hpp</string>
+ <string>../../example/error_info_1.cpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-15</id>
+ <id>-27</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -11431,7 +11634,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-17</id>
+ <id>-13</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -11491,7 +11694,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-6</id>
+ <id>-23</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -11555,6 +11758,30 @@
                                                                                 <stream_hook_path>
                                                                                         <container>
                                                                                                 <size>1</size>
+ <strong>641BB230CEBF638811480BE0E3A96ABCB7CC9CC7E1C1A9C51FBAB296FFB6B7B1</strong>
+ <weak>4248389286</weak>
+ <size>4113</size>
+ <position>323</position>
+ </container>
+ </stream_hook_path>
+ </hook>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/exception/info.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ <shared_ptr>
+ <id>-11</id>
+ </shared_ptr>
+ </pair>
+ <pair>
+ <hook>
+ <stream_hook_path>
+ <container>
+ <size>1</size>
                                                                                                 <strong>55F1164770FD778354E151EF65A3E830DA20F325F7ED20A95130A4B83FC801BF</strong>
                                                                                                 <weak>1282550303</weak>
                                                                                                 <size>9192</size>
@@ -11739,7 +11966,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-13</id>
+ <id>-9</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -11763,7 +11990,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-25</id>
+ <id>-21</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -11811,7 +12038,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-9</id>
+ <id>-5</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -11843,174 +12070,6 @@
                                                                                 <stream_hook_path>
                                                                                         <container>
                                                                                                 <size>2</size>
- <strong>E73A20FFCA320C2129509D6916B42B4619582DCB5E6B204802AFA5DB176267EA</strong>
- <weak>1330392285</weak>
- <size>11023</size>
- <position>668</position>
- <strong>6B3B617AC518A2177BDB89656E726B4E4D79577E289130493A61BAE24FB64838</strong>
- <weak>3173127726</weak>
- <size>1101</size>
- <position>1777</position>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>0</empty>
- <string>../../../../boost/exception_ptr.hpp</string>
- <type>0</type>
- <base>0</base>
- </path>
- </file>
- <shared_ptr>
- <id>-28</id>
- </shared_ptr>
- </pair>
- <pair>
- <hook>
- <stream_hook_path>
- <container>
- <size>2</size>
- <strong>E73A20FFCA320C2129509D6916B42B4619582DCB5E6B204802AFA5DB176267EA</strong>
- <weak>1330392285</weak>
- <size>11023</size>
- <position>668</position>
- <strong>E23085202D084CBB50F289988A6A592F06D923B77D0AB25D7A98A7188DF5BE3B</strong>
- <weak>1414247481</weak>
- <size>766</size>
- <position>9687</position>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>0</empty>
- <string>../../../../boost/exception_ptr.hpp</string>
- <type>0</type>
- <base>0</base>
- </path>
- </file>
- <shared_ptr>
- <id>-34</id>
- </shared_ptr>
- </pair>
- <pair>
- <hook>
- <stream_hook_path>
- <container>
- <size>2</size>
- <strong>E73A20FFCA320C2129509D6916B42B4619582DCB5E6B204802AFA5DB176267EA</strong>
- <weak>1330392285</weak>
- <size>11023</size>
- <position>668</position>
- <strong>F86EB07D04CD0D0645080D1121DA899746D0C45137E17E1D9BE605E75396F047</strong>
- <weak>1983537541</weak>
- <size>1346</size>
- <position>429</position>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>0</empty>
- <string>../../../../boost/exception_ptr.hpp</string>
- <type>0</type>
- <base>0</base>
- </path>
- </file>
- <shared_ptr>
- <id>-33</id>
- </shared_ptr>
- </pair>
- <pair>
- <hook>
- <stream_hook_path>
- <container>
- <size>2</size>
- <strong>E73A20FFCA320C2129509D6916B42B4619582DCB5E6B204802AFA5DB176267EA</strong>
- <weak>1330392285</weak>
- <size>11023</size>
- <position>668</position>
- <strong>1516D0B7E11CBEB60CE4222565ACCAFF2E9857A8A505C1C26E2AE90087250581</strong>
- <weak>3624753243</weak>
- <size>279</size>
- <position>26</position>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>0</empty>
- <string>../../../../boost/exception_ptr.hpp</string>
- <type>0</type>
- <base>0</base>
- </path>
- </file>
- <shared_ptr>
- <id>-22</id>
- </shared_ptr>
- </pair>
- <pair>
- <hook>
- <stream_hook_path>
- <container>
- <size>2</size>
- <strong>E73A20FFCA320C2129509D6916B42B4619582DCB5E6B204802AFA5DB176267EA</strong>
- <weak>1330392285</weak>
- <size>11023</size>
- <position>668</position>
- <strong>0E9DF8366080712A816BE91ABCEF1E2044145B63D75B0B995B537900F378189E</strong>
- <weak>1069696031</weak>
- <size>255</size>
- <position>10762</position>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>0</empty>
- <string>../../../../boost/exception_ptr.hpp</string>
- <type>0</type>
- <base>0</base>
- </path>
- </file>
- <shared_ptr>
- <id>-39</id>
- </shared_ptr>
- </pair>
- <pair>
- <hook>
- <stream_hook_path>
- <container>
- <size>2</size>
- <strong>E73A20FFCA320C2129509D6916B42B4619582DCB5E6B204802AFA5DB176267EA</strong>
- <weak>1330392285</weak>
- <size>11023</size>
- <position>668</position>
- <strong>0066D4E6E6B189906E6DE04F08509F3737511701A1B1355B37511EC18E8371F4</strong>
- <weak>2078296250</weak>
- <size>305</size>
- <position>10455</position>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>0</empty>
- <string>../../../../boost/exception_ptr.hpp</string>
- <type>0</type>
- <base>0</base>
- </path>
- </file>
- <shared_ptr>
- <id>-51</id>
- </shared_ptr>
- </pair>
- <pair>
- <hook>
- <stream_hook_path>
- <container>
- <size>2</size>
                                                                                                 <strong>9A4ECF9A49A73AED83C1565CB8C67AE1519E8AFE6818F968B4C4733CB9E86CEF</strong>
                                                                                                 <weak>1615599655</weak>
                                                                                                 <size>68</size>
@@ -12031,7 +12090,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-11</id>
+ <id>-7</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -12086,30 +12145,6 @@
                                                                                 <id>-38</id>
                                                                         </shared_ptr>
                                                                 </pair>
- <pair>
- <hook>
- <stream_hook_path>
- <container>
- <size>1</size>
- <strong>683D57B85DAEB8F69927D079F2038E0C64853D2B8A8CB5273B76ACAD5901DDFD</strong>
- <weak>878883983</weak>
- <size>573</size>
- <position>4185</position>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>0</empty>
- <string>../../../../boost/exception/diagnostic_information.hpp</string>
- <type>0</type>
- <base>0</base>
- </path>
- </file>
- <shared_ptr>
- <id>-61</id>
- </shared_ptr>
- </pair>
                                                         </sorted>
                                                 </index>
                                         </object>
@@ -12147,7 +12182,7 @@
                                                                                         <id>-6</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>type</string>
+ <string>exception_ptr</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -12156,7 +12191,7 @@
                                                                                         <id>-7</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>error_info</string>
+ <string></string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -12171,16 +12206,16 @@
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
- <id>-10</id>
+ <id>-11</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>exception_ptr</string>
+ <string></string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
- <id>-11</id>
+ <id>-12</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
                                                                         <string></string>
@@ -12198,7 +12233,7 @@
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
- <id>-15</id>
+ <id>-14</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
                                                                         <string></string>
@@ -12210,25 +12245,25 @@
                                                                                         <id>-16</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string></string>
+ <string>tutorial</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
- <id>-17</id>
+ <id>-18</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string></string>
+ <string>type</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
- <id>-18</id>
+ <id>-21</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string></string>
+ <string>noindex tutorial</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -12237,25 +12272,25 @@
                                                                                         <id>-22</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>type</string>
+ <string></string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
- <id>-20</id>
+ <id>-23</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>tutorial</string>
+ <string>type</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
- <id>-25</id>
+ <id>-24</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>noindex tutorial</string>
+ <string>error_info</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>

Modified: trunk/libs/exception/test/cloning_test.cpp
==============================================================================
--- trunk/libs/exception/test/cloning_test.cpp (original)
+++ trunk/libs/exception/test/cloning_test.cpp 2009-05-15 18:34:30 EDT (Fri, 15 May 2009)
@@ -13,6 +13,8 @@
 struct my_tag {};
 #endif
 
+typedef boost::error_info<struct nested_exception_tag,boost::exception_ptr> nested_exception;
+
 typedef boost::error_info<struct my_tag,int> my_info;
 
 template <class T>
@@ -69,6 +71,17 @@
     std::exception,
     boost::exception
     {
+ char const * const wh_;
+
+ derives_std_boost_exception( char const * wh="derives_std_boost_exception" ):
+ wh_(wh)
+ {
+ }
+
+ char const * what() const throw()
+ {
+ return wh_;
+ }
     };
 
 struct
@@ -530,5 +543,30 @@
     test_throw_on_copy<std::bad_alloc,std::bad_alloc>();
     test_throw_on_copy<int,std::bad_exception>();
 
+ try
+ {
+ throw boost::enable_current_exception(derives_std_boost_exception("what1"));
+ }
+ catch(
+ ... )
+ {
+ boost::exception_ptr p=boost::current_exception();
+ {
+ std::string s=diagnostic_information(p);
+ BOOST_TEST(s.find("what1")!=s.npos);
+ }
+ try
+ {
+ throw boost::enable_current_exception(derives_std_boost_exception("what2") << nested_exception(p) );
+ }
+ catch(
+ ... )
+ {
+ std::string s=boost::current_exception_diagnostic_information();
+ BOOST_TEST(s.find("what1")!=s.npos);
+ BOOST_TEST(s.find("what2")!=s.npos);
+ }
+ }
+ BOOST_TEST(!diagnostic_information(boost::exception_ptr()).empty());
     return boost::report_errors();
     }


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk