$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r77339 - in trunk: boost/exception libs/exception/doc/source
From: emil_at_[hidden]
Date: 2012-03-14 22:13:55
Author: emildotchevski
Date: 2012-03-14 22:13:52 EDT (Wed, 14 Mar 2012)
New Revision: 77339
URL: http://svn.boost.org/trac/boost/changeset/77339
Log:
Making clone_impl derive virtually from clone_base, so that calling boost::copy_exception with a type that already derives from clone_impl doesn't make pointer conversions to clone_impl ambiguous.
Text files modified: 
   trunk/boost/exception/exception.hpp                  |     2                                         
   trunk/libs/exception/doc/source/boost-exception.reno |  1750 ++++++++++++++++++++--------------------
   2 files changed, 876 insertions(+), 876 deletions(-)
Modified: trunk/boost/exception/exception.hpp
==============================================================================
--- trunk/boost/exception/exception.hpp	(original)
+++ trunk/boost/exception/exception.hpp	2012-03-14 22:13:52 EDT (Wed, 14 Mar 2012)
@@ -430,7 +430,7 @@
         class
         clone_impl:
             public T,
-            public clone_base
+            public virtual clone_base
             {
             struct clone_tag { };
             clone_impl( clone_impl const & x, clone_tag ):
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	2012-03-14 22:13:52 EDT (Wed, 14 Mar 2012)
@@ -52,34 +52,28 @@
                                                                                                                         <hook>
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
-																		<size>1</size>
-																		<strong>DB156E6A8ACB9FB90C8FB110FC25A5FEB14A619F82EEC47FF913373592E5CC3E</strong>
-																		<weak>240075319</weak>
-																		<size>6209</size>
-																		<position>412</position>
+																		<size>0</size>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
-																		<empty>0</empty>
-																		<string>../../example/example_io.cpp</string>
-																		<type>0</type>
-																		<base>0</base>
+																		<empty>1</empty>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
-																<string>diagnostic_information example</string>
+																<string>Motivation</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
-																<string></string>
+																<string>motivation</string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>0</size>
-											</pair>
-											<pair>
+												<size>7</size>
+												<variant>2</variant>
+												<string>(:include include:)
(:auto also explicit="</string>
+												<variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
@@ -91,44 +85,27 @@
                                                                                                                         <hook>
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
-																		<size>3</size>
-																		<strong>088B53C0FBDB55F55DCF1296B3206D748A2B2453CCFC3DAA2AA0FADD930561E7</strong>
-																		<weak>3582349865</weak>
-																		<size>11956</size>
-																		<position>527</position>
-																		<strong>E0D734FE11CFB52F1BBF35C31E84A098AC93881DEE300CDBE3F9B772F75D9B2F</strong>
-																		<weak>4056200131</weak>
-																		<size>2307</size>
-																		<position>4436</position>
-																		<strong>A94129EFD6ABBDDCD4CFDB671821F7DA103B2EA4455CF39E783D333C236D1C41</strong>
-																		<weak>1035445969</weak>
-																		<size>595</size>
-																		<position>204</position>
+																		<size>0</size>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
-																		<empty>0</empty>
-																		<string>../../../../boost/exception/exception.hpp</string>
-																		<type>0</type>
-																		<base>0</base>
+																		<empty>1</empty>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
-																<string>exception::exception</string>
+																<string>exception types as simple semantic tags</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
-																<string>exception_constructors</string>
+																<string></string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>1</size>
                                                                                                 <variant>2</variant>
-												<string>(:include include:)
(:auto also:)
</string>
-											</pair>
-											<pair>
+												<string> </string>
+												<variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
@@ -141,33 +118,33 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <size>1</size>
-																		<strong>977045132A532A0071B0B53F737D85367CE9A331402F96790E45B3B6F2FC88A6</strong>
-																		<weak>1875939463</weak>
-																		<size>529</size>
-																		<position>382</position>
+																		<strong>C95CEF2E9D0BAA1E950509471062916DB849A46A19F7692BA478030E79B338EB</strong>
+																		<weak>1917376632</weak>
+																		<size>706</size>
+																		<position>408</position>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
                                                                                                                                                 <empty>0</empty>
-																		<string>../../example/error_info_1.cpp</string>
+																		<string>../../example/enable_error_info.cpp</string>
                                                                                                                                                 <type>0</type>
                                                                                                                                                 <base>0</base>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
-																<string>adding of arbitrary data at the point of the throw</string>
+																<string>integrating boost exception in existing exception class hierarchies</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
-																<string>adding_data_at_throw</string>
+																<string>tutorial_enable_error_info</string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>0</size>
-											</pair>
-											<pair>
+												<variant>2</variant>
+												<string> </string>
+												<variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
@@ -189,14 +166,35 @@
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
-																<string>page index</string>
+																<string>frequently asked questions</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
-																<string>page_idx</string>
+																<string></string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
+												<variant>2</variant>
+												<string>":)
</string>
+											</pair>
+											<pair>
+												<weak_ptr>
+													<expired>0</expired>
+													<shared_ptr>
+														<id>-7</id>
+													</shared_ptr>
+												</weak_ptr>
+												<size>1</size>
+												<variant>2</variant>
+												<string>(:include include:)
(:auto also:)
</string>
+											</pair>
+											<pair>
+												<weak_ptr>
+													<expired>0</expired>
+													<shared_ptr>
+														<id>-8</id>
+													</shared_ptr>
+												</weak_ptr>
                                                                                                 <size>1</size>
                                                                                                 <variant>2</variant>
                                                                                                 <string>(:include include:)
(:auto also:)
</string>
@@ -213,27 +211,32 @@
                                                                                                                         <hook>
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
-																		<size>0</size>
+																		<size>1</size>
+																		<strong>977045132A532A0071B0B53F737D85367CE9A331402F96790E45B3B6F2FC88A6</strong>
+																		<weak>1875939463</weak>
+																		<size>529</size>
+																		<position>382</position>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
-																		<empty>1</empty>
+																		<empty>0</empty>
+																		<string>../../example/error_info_1.cpp</string>
+																		<type>0</type>
+																		<base>0</base>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
-																<string>exception types as simple semantic tags</string>
+																<string>adding of arbitrary data at the point of the throw</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
-																<string></string>
+																<string>adding_data_at_throw</string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>1</size>
-												<variant>2</variant>
-												<string>(:include include:)
(:auto also:)
</string>
+												<size>0</size>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
@@ -247,37 +250,44 @@
                                                                                                                         <hook>
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
-																		<size>0</size>
+																		<size>3</size>
+																		<strong>EFEF19E7D10F02079DA9799E42DA1415CA0C815E964E88CF1A8896D49C81EC22</strong>
+																		<weak>2916767056</weak>
+																		<size>11964</size>
+																		<position>527</position>
+																		<strong>E0D734FE11CFB52F1BBF35C31E84A098AC93881DEE300CDBE3F9B772F75D9B2F</strong>
+																		<weak>4056200131</weak>
+																		<size>2307</size>
+																		<position>4436</position>
+																		<strong>A94129EFD6ABBDDCD4CFDB671821F7DA103B2EA4455CF39E783D333C236D1C41</strong>
+																		<weak>1035445969</weak>
+																		<size>595</size>
+																		<position>204</position>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
-																		<empty>1</empty>
+																		<empty>0</empty>
+																		<string>../../../../boost/exception/exception.hpp</string>
+																		<type>0</type>
+																		<base>0</base>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
-																<string>Motivation</string>
+																<string>exception::exception</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
-																<string>motivation</string>
+																<string>exception_constructors</string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>7</size>
-												<variant>2</variant>
-												<string>(:include include:)
(:auto also explicit="</string>
-												<variant>1</variant>
-												<weak_ptr>
-													<expired>0</expired>
-													<shared_ptr>
-														<id>-9</id>
-													</shared_ptr>
-												</weak_ptr>
+												<size>1</size>
                                                                                                 <variant>2</variant>
-												<string> </string>
-												<variant>1</variant>
+												<string>(:include include:)
(:auto also:)
</string>
+											</pair>
+											<pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
@@ -289,34 +299,44 @@
                                                                                                                         <hook>
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
-																		<size>1</size>
-																		<strong>C95CEF2E9D0BAA1E950509471062916DB849A46A19F7692BA478030E79B338EB</strong>
-																		<weak>1917376632</weak>
-																		<size>706</size>
-																		<position>408</position>
+																		<size>3</size>
+																		<strong>EFBD8063574E7D463C8E08D9AA1D68CFCE4630C445B20156AC7591F46AB48260</strong>
+																		<weak>2082877988</weak>
+																		<size>5081</size>
+																		<position>751</position>
+																		<strong>2C6C9E29E4E23E6C1F5876C33741FB18A63E703410F3CD61ACB348866B7B02B8</strong>
+																		<weak>3516588960</weak>
+																		<size>3918</size>
+																		<position>884</position>
+																		<strong>38AA79D330846BE1CF17285796F34A9DBB5A7E995963A55F9B46EB1DA6314610</strong>
+																		<weak>542483318</weak>
+																		<size>573</size>
+																		<position>3130</position>
                                                                                                                                         </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>
                                                                                                                         </hook>
                                                                                                                         <title>
-																<string>integrating boost exception in existing exception class hierarchies</string>
+																<string>exception/operator<<</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
-																<string>tutorial_enable_error_info</string>
+																<string></string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
+												<size>1</size>
                                                                                                 <variant>2</variant>
-												<string> </string>
-												<variant>1</variant>
+												<string>(:include include:)
(:auto also:)
</string>
+											</pair>
+											<pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
@@ -328,17 +348,24 @@
                                                                                                                         <hook>
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
-																		<size>0</size>
+																		<size>1</size>
+																		<strong>DB156E6A8ACB9FB90C8FB110FC25A5FEB14A619F82EEC47FF913373592E5CC3E</strong>
+																		<weak>240075319</weak>
+																		<size>6209</size>
+																		<position>412</position>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
-																		<empty>1</empty>
+																		<empty>0</empty>
+																		<string>../../example/example_io.cpp</string>
+																		<type>0</type>
+																		<base>0</base>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
-																<string>frequently asked questions</string>
+																<string>diagnostic_information example</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
                                                                                                                                 <string></string>
@@ -346,8 +373,7 @@
                                                                                                                 </object>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<variant>2</variant>
-												<string>":)
</string>
+												<size>0</size>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
@@ -406,32 +432,28 @@
                                                                                                                         <hook>
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
-																		<size>3</size>
-																		<strong>EFBD8063574E7D463C8E08D9AA1D68CFCE4630C445B20156AC7591F46AB48260</strong>
-																		<weak>2082877988</weak>
-																		<size>5081</size>
-																		<position>751</position>
-																		<strong>2C6C9E29E4E23E6C1F5876C33741FB18A63E703410F3CD61ACB348866B7B02B8</strong>
-																		<weak>3516588960</weak>
-																		<size>3918</size>
-																		<position>884</position>
-																		<strong>38AA79D330846BE1CF17285796F34A9DBB5A7E995963A55F9B46EB1DA6314610</strong>
-																		<weak>542483318</weak>
-																		<size>573</size>
-																		<position>3130</position>
+																		<size>2</size>
+																		<strong>6FB85B536F965F137409D5B5D34786DCBF0B9957A7C251D271B717A1156B823D</strong>
+																		<weak>1090406464</weak>
+																		<size>362</size>
+																		<position>527</position>
+																		<strong>D16DAEA8B1792A019AF7FCA362FDC6EFD381AF4C43C076A01C029ECE51F994A6</strong>
+																		<weak>3172941848</weak>
+																		<size>330</size>
+																		<position>26</position>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
                                                                                                                                                 <empty>0</empty>
-																		<string>../../../../boost/exception/info.hpp</string>
+																		<string>../../../../boost/exception/current_exception_cast.hpp</string>
                                                                                                                                                 <type>0</type>
                                                                                                                                                 <base>0</base>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
-																<string>exception/operator<<</string>
+																<string>current_exception_cast</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
                                                                                                                                 <string></string>
@@ -447,17 +469,6 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-11</id>
-													</shared_ptr>
-												</weak_ptr>
-												<size>1</size>
-												<variant>2</variant>
-												<string>(:include include:)
(:auto also:)
</string>
-											</pair>
-											<pair>
-												<weak_ptr>
-													<expired>0</expired>
-													<shared_ptr>
                                                                                                                 <id>15</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
@@ -466,28 +477,24 @@
                                                                                                                         <hook>
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
-																		<size>2</size>
-																		<strong>9A4ECF9A49A73AED83C1565CB8C67AE1519E8AFE6818F968B4C4733CB9E86CEF</strong>
-																		<weak>1615599655</weak>
-																		<size>68</size>
-																		<position>227</position>
-																		<strong>34F0583BC8DE767CE2D79721E1F956895E43E5397473B1050F59BE7E26C773DB</strong>
-																		<weak>805836816</weak>
-																		<size>66</size>
-																		<position>1</position>
+																		<size>1</size>
+																		<strong>790A065B0168021FAD180E996254E3CDBC0360D22D3FCB83C143416663D85402</strong>
+																		<weak>1376868984</weak>
+																		<size>262</size>
+																		<position>323</position>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
                                                                                                                                                 <empty>0</empty>
-																		<string>../../../../boost/exception/error_info.hpp</string>
+																		<string>../../../../boost/exception/errinfo_nested_exception.hpp</string>
                                                                                                                                                 <type>0</type>
                                                                                                                                                 <base>0</base>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
-																<string>boost/exception/error_info.hpp</string>
+																<string>boost/exception/errinfo_nested_exception.hpp</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
                                                                                                                                 <string></string>
@@ -512,27 +519,27 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <size>2</size>
-																		<strong>6FB85B536F965F137409D5B5D34786DCBF0B9957A7C251D271B717A1156B823D</strong>
-																		<weak>1090406464</weak>
-																		<size>362</size>
-																		<position>527</position>
-																		<strong>D16DAEA8B1792A019AF7FCA362FDC6EFD381AF4C43C076A01C029ECE51F994A6</strong>
-																		<weak>3172941848</weak>
-																		<size>330</size>
-																		<position>26</position>
+																		<strong>9A4ECF9A49A73AED83C1565CB8C67AE1519E8AFE6818F968B4C4733CB9E86CEF</strong>
+																		<weak>1615599655</weak>
+																		<size>68</size>
+																		<position>321</position>
+																		<strong>34F0583BC8DE767CE2D79721E1F956895E43E5397473B1050F59BE7E26C773DB</strong>
+																		<weak>805836816</weak>
+																		<size>66</size>
+																		<position>1</position>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
                                                                                                                                                 <empty>0</empty>
-																		<string>../../../../boost/exception/current_exception_cast.hpp</string>
+																		<string>../../../../boost/exception/error_info.hpp</string>
                                                                                                                                                 <type>0</type>
                                                                                                                                                 <base>0</base>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
-																<string>current_exception_cast</string>
+																<string>boost/exception/error_info.hpp</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
                                                                                                                                 <string></string>
@@ -548,17 +555,6 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-12</id>
-													</shared_ptr>
-												</weak_ptr>
-												<size>1</size>
-												<variant>2</variant>
-												<string>(:include include:)
(:auto also:)
</string>
-											</pair>
-											<pair>
-												<weak_ptr>
-													<expired>0</expired>
-													<shared_ptr>
                                                                                                                 <id>17</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
@@ -604,6 +600,17 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
+														<id>-6</id>
+													</shared_ptr>
+												</weak_ptr>
+												<size>1</size>
+												<variant>2</variant>
+												<string>(:include include:)
(:auto also:)
</string>
+											</pair>
+											<pair>
+												<weak_ptr>
+													<expired>0</expired>
+													<shared_ptr>
                                                                                                                 <id>18</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
@@ -612,27 +619,20 @@
                                                                                                                         <hook>
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
-																		<size>1</size>
-																		<strong>790A065B0168021FAD180E996254E3CDBC0360D22D3FCB83C143416663D85402</strong>
-																		<weak>1376868984</weak>
-																		<size>262</size>
-																		<position>323</position>
+																		<size>0</size>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
-																		<empty>0</empty>
-																		<string>../../../../boost/exception/errinfo_nested_exception.hpp</string>
-																		<type>0</type>
-																		<base>0</base>
+																		<empty>1</empty>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
-																<string>boost/exception/errinfo_nested_exception.hpp</string>
+																<string>page index</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
-																<string></string>
+																<string>page_idx</string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
@@ -922,9 +922,9 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <size>3</size>
-																		<strong>088B53C0FBDB55F55DCF1296B3206D748A2B2453CCFC3DAA2AA0FADD930561E7</strong>
-																		<weak>3582349865</weak>
-																		<size>11956</size>
+																		<strong>EFEF19E7D10F02079DA9799E42DA1415CA0C815E964E88CF1A8896D49C81EC22</strong>
+																		<weak>2916767056</weak>
+																		<size>11964</size>
                                                                                                                                                 <position>527</position>
                                                                                                                                                 <strong>E0D734FE11CFB52F1BBF35C31E84A098AC93881DEE300CDBE3F9B772F75D9B2F</strong>
                                                                                                                                                 <weak>4056200131</weak>
@@ -1139,10 +1139,10 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <size>1</size>
-																		<strong>9A6D5598D65F1C1B5F913007D1CD1A814F3CDAD07D4AF8C468A0716059B2F7CC</strong>
-																		<weak>3552995087</weak>
-																		<size>1405</size>
-																		<position>527</position>
+																		<strong>195FF369BA559E3C0080F75321794B4808B6A278D4DEF8AEDBD9FCEBCE69C548</strong>
+																		<weak>458631219</weak>
+																		<size>2145</size>
+																		<position>321</position>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
@@ -1624,13 +1624,13 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <size>2</size>
-																		<strong>F7633FDCF6615C0199645701EE6E7ACE5CBCD7A7CF6838573791E91ABB3C09F2</strong>
-																		<weak>1668435395</weak>
-																		<size>1332</size>
+																		<strong>1B4417301AE3C0338C22E6D497391F51ABD459E521E7DFCE59A6EEC1372D33C2</strong>
+																		<weak>202224383</weak>
+																		<size>1766</size>
                                                                                                                                                 <position>600</position>
-																		<strong>A1F443AF571973A12005D2F7D4AE09A32AAF686FEEAE272EC21512A65EB943E8</strong>
-																		<weak>3879093659</weak>
-																		<size>1300</size>
+																		<strong>E0A17503B42EE12F31548A7D20F89916D734CE88B30A1BF6F9FC2D1F83A8B6F4</strong>
+																		<weak>3410340567</weak>
+																		<size>1734</size>
                                                                                                                                                 <position>26</position>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
@@ -2117,9 +2117,9 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <size>2</size>
-																		<strong>088B53C0FBDB55F55DCF1296B3206D748A2B2453CCFC3DAA2AA0FADD930561E7</strong>
-																		<weak>3582349865</weak>
-																		<size>11956</size>
+																		<strong>EFEF19E7D10F02079DA9799E42DA1415CA0C815E964E88CF1A8896D49C81EC22</strong>
+																		<weak>2916767056</weak>
+																		<size>11964</size>
                                                                                                                                                 <position>527</position>
                                                                                                                                                 <strong>F3FB15CD82336271C6E875BC620385322777D16F0B7C233300783CE35710CCBF</strong>
                                                                                                                                                 <weak>3292878997</weak>
@@ -2330,14 +2330,14 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <size>2</size>
-																		<strong>088B53C0FBDB55F55DCF1296B3206D748A2B2453CCFC3DAA2AA0FADD930561E7</strong>
-																		<weak>3582349865</weak>
-																		<size>11956</size>
+																		<strong>EFEF19E7D10F02079DA9799E42DA1415CA0C815E964E88CF1A8896D49C81EC22</strong>
+																		<weak>2916767056</weak>
+																		<size>11964</size>
                                                                                                                                                 <position>527</position>
                                                                                                                                                 <strong>DF9EA87B0140AACF4422F1B76F6A6A409C15F32858BBBA85A35981A824C56BA9</strong>
                                                                                                                                                 <weak>1137981799</weak>
                                                                                                                                                 <size>192</size>
-																		<position>11758</position>
+																		<position>11766</position>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
@@ -2665,9 +2665,9 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <size>2</size>
-																		<strong>088B53C0FBDB55F55DCF1296B3206D748A2B2453CCFC3DAA2AA0FADD930561E7</strong>
-																		<weak>3582349865</weak>
-																		<size>11956</size>
+																		<strong>EFEF19E7D10F02079DA9799E42DA1415CA0C815E964E88CF1A8896D49C81EC22</strong>
+																		<weak>2916767056</weak>
+																		<size>11964</size>
                                                                                                                                                 <position>527</position>
                                                                                                                                                 <strong>17E691632123EB67BA67D590B49EB8094F462F5A10A66A1C5438E1867EF1478E</strong>
                                                                                                                                                 <weak>765399792</weak>
@@ -2947,9 +2947,9 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <size>1</size>
-																		<strong>088B53C0FBDB55F55DCF1296B3206D748A2B2453CCFC3DAA2AA0FADD930561E7</strong>
-																		<weak>3582349865</weak>
-																		<size>11956</size>
+																		<strong>EFEF19E7D10F02079DA9799E42DA1415CA0C815E964E88CF1A8896D49C81EC22</strong>
+																		<weak>2916767056</weak>
+																		<size>11964</size>
                                                                                                                                                 <position>527</position>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
@@ -3251,7 +3251,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-6</id>
+														<id>-7</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -3260,7 +3260,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-7</id>
+														<id>-8</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -3269,7 +3269,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-8</id>
+														<id>-9</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -3278,7 +3278,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-9</id>
+														<id>-10</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -3287,7 +3287,16 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-10</id>
+														<id>-11</id>
+													</shared_ptr>
+												</weak_ptr>
+												<size>0</size>
+											</pair>
+											<pair>
+												<weak_ptr>
+													<expired>0</expired>
+													<shared_ptr>
+														<id>-12</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -3334,15 +3343,6 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-11</id>
-													</shared_ptr>
-												</weak_ptr>
-												<size>0</size>
-											</pair>
-											<pair>
-												<weak_ptr>
-													<expired>0</expired>
-													<shared_ptr>
                                                                                                                 <id>-15</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
@@ -3361,7 +3361,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-12</id>
+														<id>-17</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -3370,7 +3370,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-17</id>
+														<id>-6</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -3501,7 +3501,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-6</id>
+														<id>-10</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -4185,7 +4185,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-6</id>
+														<id>-7</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -4194,7 +4194,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-7</id>
+														<id>-8</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -4203,7 +4203,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-8</id>
+														<id>-9</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -4212,7 +4212,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-9</id>
+														<id>-10</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -4221,7 +4221,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-10</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -4230,7 +4230,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-13</id>
+														<id>-12</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -4239,7 +4239,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-13</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -4248,7 +4248,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-11</id>
+														<id>-14</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -4267,11 +4267,11 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-26</id>
+														<id>-63</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string> decl:)@]
</string>
+												<string> def:)@]
</string>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
@@ -4280,16 +4280,18 @@
                                                                                                                 <id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>0</size>
-											</pair>
-											<pair>
+												<size>3</size>
+												<variant>2</variant>
+												<string>[@(:include </string>
+												<variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-12</id>
+														<id>-26</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>0</size>
+												<variant>2</variant>
+												<string> decl:)@]
</string>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
@@ -4304,21 +4306,19 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-18</id>
+														<id>-6</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>3</size>
-												<variant>2</variant>
-												<string>[@(:include </string>
-												<variant>1</variant>
+												<size>0</size>
+											</pair>
+											<pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-63</id>
+														<id>-18</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<variant>2</variant>
-												<string> def:)@]
</string>
+												<size>0</size>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
@@ -4851,7 +4851,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-16</id>
+														<id>-14</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -4889,7 +4889,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -5158,7 +5158,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-15</id>
+														<id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -5275,7 +5275,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-18</id>
+														<id>-15</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -5355,45 +5355,25 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-6</id>
-													</shared_ptr>
-												</weak_ptr>
-												<size>7</size>
-												<variant>2</variant>
-												<string>[@(:link </string>
-												<variant>1</variant>
-												<weak_ptr>
-													<expired>0</expired>
-													<shared_ptr>
-														<id>-6</id>
-													</shared_ptr>
-												</weak_ptr>
-												<variant>2</variant>
-												<string> mod="m":)();
(:link </string>
-												<variant>1</variant>
-												<weak_ptr>
-													<expired>0</expired>
-													<shared_ptr>
-														<id>-6</id>
+														<id>-7</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<variant>2</variant>
-												<string> mod="m":)( (:link </string>
-												<variant>1</variant>
+												<size>0</size>
+											</pair>
+											<pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-25</id>
+														<id>-8</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<variant>2</variant>
-												<string>:) const & x );@]
</string>
+												<size>0</size>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-7</id>
+														<id>-9</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -5402,43 +5382,45 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-8</id>
+														<id>-10</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>0</size>
-											</pair>
-											<pair>
+												<size>7</size>
+												<variant>2</variant>
+												<string>[@(:link </string>
+												<variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-9</id>
+														<id>-10</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>0</size>
-											</pair>
-											<pair>
+												<variant>2</variant>
+												<string> mod="m":)();
(:link </string>
+												<variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
                                                                                                                 <id>-10</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>0</size>
-											</pair>
-											<pair>
+												<variant>2</variant>
+												<string> mod="m":)( (:link </string>
+												<variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-13</id>
+														<id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>0</size>
+												<variant>2</variant>
+												<string>:) const & x );@]
</string>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>5</size>
@@ -5448,7 +5430,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -5467,7 +5449,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-11</id>
+														<id>-12</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -5476,7 +5458,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-15</id>
+														<id>-13</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -5485,7 +5467,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-16</id>
+														<id>-14</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>3</size>
@@ -5495,7 +5477,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-16</id>
+														<id>-14</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -5505,7 +5487,16 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-12</id>
+														<id>-15</id>
+													</shared_ptr>
+												</weak_ptr>
+												<size>0</size>
+											</pair>
+											<pair>
+												<weak_ptr>
+													<expired>0</expired>
+													<shared_ptr>
+														<id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -5543,6 +5534,15 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
+														<id>-6</id>
+													</shared_ptr>
+												</weak_ptr>
+												<size>0</size>
+											</pair>
+											<pair>
+												<weak_ptr>
+													<expired>0</expired>
+													<shared_ptr>
                                                                                                                 <id>-18</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
@@ -6536,65 +6536,63 @@
                                                                                                                 <id>-5</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>11</size>
+												<size>33</size>
                                                                                                 <variant>2</variant>
-												<string>!!!!Example:

this is a possible output from the (:link </string>
+												<string>(:auto !!!:)

Traditionally, when using exceptions to report failures, the throw site:

*creates an exception object of the appropriate type, and
*stuffs it with data relevant to the detected error.

A higher context in the program contains a catch statement which:

*selects failures based on exception types, and
*inspects exception objects for data required to deal with the problem.

The main issue with this "traditional" approach is that often, the data available at the point of the throw is insufficient for the catch site to handle the failure.

Here is an example of a catch statement:

[@catch( file_read_error & e )
    {
    std::cerr << e.file_name();
    }@]

And here is a possible matching throw:

[@void
read_file( FILE * f )
    {
    ....
    size_t nr=fread(buf,1,count,f);
    if( ferror(f) )
        throw file_read_error(???);
    ....
0;    }@]

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!

In an attempt to deal with this problem, we could modify read_file to accept a file name:

[@void
read_file( FILE * f, char const * name )
    {
    ....
    size_t nr=fread(buf,1,count,f);
    if( ferror(f) )
        throw file_read_error(name);
    ....
    }@]

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.

->''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.''

!!!Exception wrapping

The idea of exception wrapping is to catch an excep
tion 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.

Exception wrapping leads to the following problems:

*To wrap an exception object it must be copied, which may result in slicing.
*Wrapping is practically impossible to use in generic contexts.

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.

!!!The boost::exception solution

*Simply derive your exception types from boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-34</id>
+														<id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) function, as used in ''libs/exception/example/example_io.cpp:''

[@example_io.cpp(70): Throw in function class boost::shared_ptr<struct _iobuf> __cdecl my_fopen(const char *,const char *)
Dynamic exception type: class boost::exception_detail::clone_impl<struct fopen_error>
std::exception::what: example_io error
[struct boost::(:link </string>
+												<string>:).
*Confidently limit the throw site to provide only data that is available naturally.
*Use exception-neutral contexts between the throw and the catch to augment exceptions with more relevant data as they bubble up.

For example, in the throw statement below we only add the errno code, since this is the only failure-relevant information available in this context:

[@struct exception_base: virtual std::exception, virtual boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-32</id>
+														<id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:)_ *] = fopen
[struct boost::(:link </string>
+												<string>:) { };
struct io_error: virtual exception_base { };
struct file_read_error: virtual io_error { };

typedef boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-13</id>
+														<id>-26</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:)_ *] = 2, "No such file or directory"
[struct boost::(:link </string>
+												<string>:)<struct tag_errno_code,int> errno_code;

void
read_file( FILE * f )
    {
    ....
    size_t nr=fread(buf,1,count,f);
    if( ferror(f) )
        throw file_read_error() (:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-72</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:)_ *] = tmp1.txt
[struct boost::(:link </string>
+												<string>|<<:) errno_code(errno);
    ....
    }@]

In a higher exception-neutral context, we add the file name to ''any'' exception that derives from boost::(:link </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>:)_ *] = rb@]
</string>
-											</pair>
-											<pair>
+												<string>:):

[@typedef boost::(:link </string>
+												<variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-6</id>
+														<id>-26</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>7</size>
                                                                                                 <variant>2</variant>
-												<string>(:auto !!!:)

(:include decl:)

!!!!Effects:

* Default constructor: initializes an empty boost::(:link </string>
+												<string>:)<struct tag_file_name,std::string> file_name;

....
try
    {
    if( FILE * fp=fopen("foo.txt","rt") )
        {
        shared_ptr<FILE> f(fp,fclose);
        ....
        read_file(fp); //throws types deriving from boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
@@ -6603,204 +6601,198 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) object.
* Copy constructor: initializes a boost::(:link </string>
+												<string>:)
        do_something();
        ....
        }
    else
        throw file_open_error() (:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-25</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) object which shares ownership with x of all data added through (:link </string>
+												<string>|<<:) errno_code(errno);
    }
catch( boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string> mod="/":), including data that is added at a future time.

!!!!Throws:

Nothing.
</string>
-											</pair>
-											<pair>
+												<string>:) & e )
    {
    e (:link </string>
+												<variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-7</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>17</size>
                                                                                                 <variant>2</variant>
-												<string>(:auto !!!:)

The following example demonstrates how errno can be stored in exception objects using Boost Exception:

[@#include <(:link </string>
+												<string>|<<:) file_name("foo.txt");
    throw;
    }@]

Finally here is how the handler retrieves data from exceptions that derive from boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-77</id>
+														<id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:)>
#include <iostream>

typedef boost::(:link </string>
+												<string>:):

[@catch( io_error & e )
    {
    std::cerr << "I/O Error!\n";

    if( std::string const * fn=(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-26</id>
+														<id>-20</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:)<struct tag_my_info,int> my_info; //(1)

struct my_error: virtual boost::(:link </string>
+												<string>:)<file_name>(e) )
        std::cerr << "File name: " << *fn << "\n";

    if( int const * c=(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-25</id>
+														<id>-20</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:), virtual std::exception { }; //(2)

void
f()
    {
    throw my_error() << my_info(42); //(3)
    }@]

First, we instantiate the (:link </string>
+												<string>:)<errno_code>(e) )
        std::cerr << "OS says: " << strerror(*c) << "\n";
    }@]

In addition, boost::(: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>:) template using a unique identifier -- tag_my_info, and the type of the info it identifies -- int. This provides compile-time type safety for the various values stored in exception objects.

Second, we define class my_error, which derives from boost::(:link </string>
+												<string>:) can be used to compose an automatic (if not user-friendly) message that contains all of the (:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-25</id>
+														<id>-26</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:).

Finally, (3) illustrates how the typedef from (1) can be used with (:link </string>
+												<string>:) objects added to a boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>|operator<<:) to store values in exception objects at the point of the throw.

The stored my_info value can be recovered at a later time like this:

[@// ...continued

void
g()
    {
    try
        {
        f();
        }
    catch(
    my_error & x )
        {
        if( int const * mi=boost::(:link </string>
-												<variant>1</variant>
+												<string>:). This is useful for inclusion in logs and other diagnostic objects.
</string>
+											</pair>
+											<pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-20</id>
+														<id>-7</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
+												<size>27</size>
                                                                                                 <variant>2</variant>
-												<string>:)<my_info>(x) )
            std::cerr << "My info: " << *mi;
        }
    }@]

The (:link </string>
+												<string>(:auto !!:)

Some exception hierarchies can not be modified to make boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-20</id>
+														<id>-25</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.
</string>
-											</pair>
-											<pair>
+												<string>:) a base type. In this case, the (:link </string>
+												<variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-8</id>
+														<id>-54</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>1</size>
                                                                                                 <variant>2</variant>
-												<string>(:auto !:)

This is an alphabetical list of all Boost Exception documentation pages.

(:pagelist fmt="index" except_tags="index noindex" mod="w":)
</string>
-											</pair>
-											<pair>
+												<string>:) function template can be used to make exception objects derive from boost::(:link </string>
+												<variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-9</id>
+														<id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>7</size>
                                                                                                 <variant>2</variant>
-												<string>(:auto !!!:)

Deriving from boost::(:link </string>
+												<string>:) anyway. Here is an example:

[@#include <(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-25</id>
+														<id>-77</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.

In other words: with boost::(:link </string>
+												<string>:)>
#include <stdexcept>

typedef boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-25</id>
+														<id>-26</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:

[@struct exception_base: virtual std::exception, virtual boost::(:link </string>
+												<string>:)<struct tag_std_range_min,size_t> std_range_min;
typedef boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-25</id>
+														<id>-26</id>
                                                                                                         </shared_ptr>
-												</weak_ptr>
-												<variant>2</variant>
-												<string>:) { };
struct io_error: virtual exception_base { };
struct file_error: virtual io_error { };
struct read_error: virtual io_error { };
struct file_read_error: virtual file_error, virtual read_error { };@]

Using this approach, exception types become a simple tagging system for categorizing errors and selecting failures in exception handlers.
</string>
-											</pair>
-											<pair>
+												</weak_ptr>
+												<variant>2</variant>
+												<string>:)<struct tag_std_range_max,size_t> std_range_max;
typedef boost::(:link </string>
+												<variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-10</id>
+														<id>-26</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>33</size>
                                                                                                 <variant>2</variant>
-												<string>(:auto !!!:)

Traditionally, when using exceptions to report failures, the throw site:

*creates an exception object of the appropriate type, and
*stuffs it with data relevant to the detected error.

A higher context in the program contains a catch statement which:

*selects failures based on exception types, and
*inspects exception objects for data required to deal with the problem.

The main issue with this "traditional" approach is that often, the data available at the point of the throw is insufficient for the catch site to handle the failure.

Here is an example of a catch statement:

[@catch( file_read_error & e )
    {
    std::cerr << e.file_name();
    }@]

And here is a possible matching throw:

[@void
read_file( FILE * f )
    {
    ....
    size_t nr=fread(buf,1,count,f);
    if( ferror(f) )
        throw file_read_error(???);
    ....
0;    }@]

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!

In an attempt to deal with this problem, we could modify read_file to accept a file name:

[@void
read_file( FILE * f, char const * name )
    {
    ....
    size_t nr=fread(buf,1,count,f);
    if( ferror(f) )
        throw file_read_error(name);
    ....
    }@]

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.

->''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.''

!!!Exception wrapping

The idea of exception wrapping is to catch an excep
tion 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.

Exception wrapping leads to the following problems:

*To wrap an exception object it must be copied, which may result in slicing.
*Wrapping is practically impossible to use in generic contexts.

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.

!!!The boost::exception solution

*Simply derive your exception types from boost::(:link </string>
+												<string>:)<struct tag_std_range_index,size_t> std_range_index;

template <class T>
class
my_container
    {
    public:

    size_t size() const;

    T const &
    operator[]( size_t i ) const
        {
        if( i > size() )
            throw boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-25</id>
+														<id>-54</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:).
*Confidently limit the throw site to provide only data that is available naturally.
*Use exception-neutral contexts between the throw and the catch to augment exceptions with more relevant data as they bubble up.

For example, in the throw statement below we only add the errno code, since this is the only failure-relevant information available in this context:

[@struct exception_base: virtual std::exception, virtual boost::(:link </string>
+												<string>:)(std::range_error("Index out of range")) <<
                std_range_min(0) <<
                std_range_max(size()) <<
                std_range_index(i);
        //....
        }
    };
@]

The call to (:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-25</id>
+														<id>-54</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) { };
struct io_error: virtual exception_base { };
struct file_read_error: virtual io_error { };

typedef boost::(:link </string>
+												<string>:)<T> gets us an object of ''unspecified type'' which is guaranteed to derive from both boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-26</id>
+														<id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:)<struct tag_errno_code,int> errno_code;

void
read_file( FILE * f )
    {
    ....
    size_t nr=fread(buf,1,count,f);
    if( ferror(f) )
        throw file_read_error() (:link </string>
+												<string>:) and T. This makes it possible to use (:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>|<<:) errno_code(errno);
    ....
    }@]

In a higher exception-neutral context, we add the file name to ''any'' exception that derives from boost::(:link </string>
+												<string> mod="/":) to store additional information in the exception object. The exception can be intercepted as T &, so existing exception handling will not break. It can also be intercepted as boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
@@ -6809,34 +6801,36 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:):

[@typedef boost::(:link </string>
+												<string>:) &, so that (:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-26</id>
+														<id>-73</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:)<struct tag_file_name,std::string> file_name;

....
try
    {
    if( FILE * fp=fopen("foo.txt","rt") )
        {
        shared_ptr<FILE> f(fp,fclose);
        ....
        read_file(fp); //throws types deriving from boost::(:link </string>
-												<variant>1</variant>
+												<string>|more information can be added to the exception at a later time:).
</string>
+											</pair>
+											<pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-25</id>
+														<id>-8</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
+												<size>81</size>
                                                                                                 <variant>2</variant>
-												<string>:)
        do_something();
        ....
        }
    else
        throw file_open_error() (:link </string>
+												<string>(:auto !!:)

!!!Why doesn't boost::exception derive from std::exception?

Despite that (:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-38</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>|<<:) errno_code(errno);
    }
catch( 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>
@@ -6845,16 +6839,16 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) & e )
    {
    e (:link </string>
+												<string>:) derives from std::exception, using the (:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-54</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>|<<:) file_name("foo.txt");
    throw;
    }@]

Finally here is how the handler retrieves data from exceptions that derive from boost::(:link </string>
+												<string>:) function with such user-defined types would introduce dangerous ambiguity which would break all catch(std::exception &) statements.

Of course, boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
@@ -6863,43 +6857,43 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:):

[@catch( io_error & e )
    {
    std::cerr << "I/O Error!\n";

    if( std::string const * fn=(: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.)

!!!Why is boost::exception abstract?

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>-20</id>
+														<id>-26</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:)<file_name>(e) )
        std::cerr << "File name: " << *fn << "\n";

    if( int const * c=(:link </string>
+												<string>:) to an active exception object:

[@catch( boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-20</id>
+														<id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:)<errno_code>(e) )
        std::cerr << "OS says: " << strerror(*c) << "\n";
    }@]

In addition, boost::(:link </string>
+												<string>:) & e )
    {
    e (:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-34</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) can be used to compose an automatic (if not user-friendly) message that contains all of the (:link </string>
+												<string>|<<:) foo_info(foo);
    throw e; //Compile error: boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-26</id>
+														<id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) objects added to a boost::(:link </string>
+												<string>:) is abstract
    }@]

The correct code is:

[@catch( boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
@@ -6908,27 +6902,25 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:). This is useful for inclusion in logs and other diagnostic objects.
</string>
-											</pair>
-											<pair>
+												<string>:) & e )
    {
    e (:link </string>
+												<variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-13</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>7</size>
                                                                                                 <variant>2</variant>
-												<string>(:auto !!!:)

(:include synopsis:)

This type is designed to be used as a standard (:link </string>
+												<string>|<<:) foo_info(foo);
    throw; //Okay, re-throwing the original exception object.
    }@]

!!!What is the space overhead of the boost::exception base class?

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>-26</id>
+														<id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) instance for transporting a relevant errno value in exceptions deriving from boost::(:link </string>
+												<string>:) does not by itself cause dynamic memory allocations.

Deriving from boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
@@ -6937,27 +6929,25 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:).

!!!Example:

(:include </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.

!!!What is the speed overhead of the boost::exception base class?

Throwing objects that derive from boost::exception does not have any speed overhead by itself.

Deriving from boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-60</id>
+														<id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:)
</string>
-											</pair>
-											<pair>
+												<string>:) enables any data to be added to exceptions, which internally uses constructs that can be considered quite heavy (such as std::map and std::string.) This is still negligible compared to the typical overhead of throwing and handling of exceptions.

!!!Should I use boost::throw_exception or BOOST_THROW_EXCEPTION or just throw?

The benefit of calling boost::(:link </string>
+												<variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-70</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>7</size>
                                                                                                 <variant>2</variant>
-												<string>(:auto !!!:)

(:include synopsis:)

!!!!Requirements:

E must be 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>
@@ -6966,285 +6956,279 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:), or a type that derives (indirectly) from boost::(:link </string>
+												<string>:) and that it is compatible with boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-25</id>
+														<id>-53</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:).

!!!!Postcondition:

A copy of v is stored into x. If x already contains data of type (:link </string>
+												<string>:).

The (:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-26</id>
+														<id>-66</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:)<Tag,T>, that data is overwritten. Basic exception safety guarantee.

!!!!Returns:

x.

(:include throws:)
</string>
-											</pair>
-											<pair>
+												<string>:) macro also results in a call to boost::(:link </string>
+												<variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-11</id>
+														<id>-70</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>27</size>
                                                                                                 <variant>2</variant>
-												<string>(:auto !!:)

Some exception hierarchies can not be modified to make boost::(: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>
                                                                                                         <shared_ptr>
-														<id>-25</id>
+														<id>-34</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) a base type. In this case, the (:link </string>
+												<string>:) to compose a more useful, if not user-friendly message.

Typical use of boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-54</id>
+														<id>-34</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) function template can be used to make exception objects derive from boost::(:link </string>
+												<string>:) is:

[@catch( boost::exception & e )
    {
    std::cerr << "OMG!" << boost::diagnostic_information(e);
    }
catch( ... )
    {
    std::cerr << "OMG!!!";
    }@]

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>-25</id>
+														<id>-66</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) anyway. Here is an example:

[@#include <(:link </string>
+												<string>:) is used:

[@example_io.cpp(70): Throw in function class boost::shared_ptr<struct _iobuf> __cdecl my_fopen(const char *,const char *)
Dynamic exception type: class boost::exception_detail::clone_impl<class fopen_error>
std::exception::what: example_io error
[struct boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-77</id>
+														<id>-32</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:)>
#include <stdexcept>

typedef boost::(:link </string>
+												<string>:)_ *] = fopen
[struct boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-26</id>
+														<id>-13</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:)<struct tag_std_range_min,size_t> std_range_min;
typedef boost::(:link </string>
+												<string>:)_ *] = 2, "No such file or directory"
[struct boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-26</id>
+														<id>-72</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:)<struct tag_std_range_max,size_t> std_range_max;
typedef boost::(:link </string>
+												<string>:)_ *] = tmp1.txt
[struct boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-26</id>
+														<id>-22</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:)<struct tag_std_range_index,size_t> std_range_index;

template <class T>
class
my_container
    {
    public:

    size_t size() const;

    T const &
    operator[]( size_t i ) const
        {
        if( i > size() )
            throw boost::(:link </string>
+												<string>:)_ *] = rb@]
!!!Why is boost::exception integrated in boost::throw_exception?

The boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-54</id>
+														<id>-70</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:)(std::range_error("Index out of range")) <<
                std_range_min(0) <<
                std_range_max(size()) <<
                std_range_index(i);
        //....
        }
    };
@]

The call to (: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>-54</id>
+														<id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:)<T> gets us an object of ''unspecified type'' which is guaranteed to derive from both 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>-25</id>
+														<id>-70</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) and T. This makes it possible to use (: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.

The problem is that users of Boost Exception can't by themselves cause a library to throw types that derive from boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string> mod="/":) to store additional information in the exception object. The exception can be intercepted as T &, so existing exception handling will not break. It can also be intercepted as boost::(:link </string>
+												<string>:), and without this they can't use any of the Boost Exception facilities.

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>-25</id>
+														<id>-21</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) &, so that (:link </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>-73</id>
+														<id>-59</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>|more information can be added to the exception at a later time:).
</string>
-											</pair>
-											<pair>
+												<string>:). If Boost Serialization calls boost::(:link </string>
+												<variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-15</id>
+														<id>-70</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>1</size>
                                                                                                 <variant>2</variant>
-												<string>(:auto !!:)

!!!Synopsis

(:include synopsis:)
</string>
-											</pair>
-											<pair>
+												<string>:) to throw, this behavior happens automatically and transparently.

The cost of this integration is:

* In terms of space: a pointer and 3 ints are added to the static size of exception objects.
* In terms of speed: the pointer is initialized to null at the point of the throw.
* In terms of coupling: about 400 self-contained lines of C++ with no external includes.

!!!Why use operator<< overload for adding info to exceptions?

Before throwing an object of type that derives from boost::(:link </string>
+												<variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-16</id>
+														<id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>1</size>
                                                                                                 <variant>2</variant>
-												<string>(:auto !!!:)

(:include synopsis:)

!!!!Requirements:

This function must not be called outside of a catch block.

!!!!Returns:

A pointer of type E to the current exception object, or null if the current exception object can not be converted to E *.

!!!!Throws:

Nothing.
</string>
-											</pair>
-											<pair>
+												<string>:), it is often desirable to add one or more (:link </string>
+												<variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-12</id>
+														<id>-26</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>81</size>
                                                                                                 <variant>2</variant>
-												<string>(:auto !!:)

!!!Why doesn't boost::exception derive from std::exception?

Despite that (:link </string>
+												<string>:) objects in it. The syntactic sugar provided by (:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-38</id>
+														<id>-11</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>:) allows this to be done directly in a throw expression:

[@throw error() (:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-25</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) derives from std::exception, using the (:link </string>
+												<string>|<<:) foo_info(foo) (:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-54</id>
+														<id>-11</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 &) statements.

Of course, boost::(:link </string>
+												<string>|<<:) bar_info(bar);@]

which saves typing compared to this possible alternative:

[@error e;
e.add(foo_info(foo));
e.add(bar_info(bar));
throw e;@]

and looks better than something like:

[@throw error().add(foo_info(foo)).add(bar_info(bar));@]

!!!Why is operator<< allowed to throw?

This question is referring to the following issue. Consider this throw statement example:

[@throw file_open_error() (:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-25</id>
+														<id>-11</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.)

!!!Why is boost::exception abstract?

To prevent exception-neutral contexts from erroneously erasing the type of the original exception when adding (:link </string>
+												<string>|<<:) file_name(fn);@]

The intention here is to throw a file_open_error, however if (:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-26</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) to an active exception object:

[@catch( boost::(:link </string>
+												<string> mod="/":) fails to copy the std::string contained in the file_name (:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-25</id>
+														<id>-26</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) & e )
    {
    e (:link </string>
-												<variant>1</variant>
+												<string>:) wrapper, a std::bad_alloc could propagate instead. This behavior seems undesirable to some programmers.

Bjarne Stroustrup, The C++ Programming Language, 3rd Edition, page 371:

->''"Throwing an exception requires an object to throw.  A C++ implementation is required to have enough spare memory to be able to throw bad_alloc in case of memory exhaustion.  However, it is possible that throwing some other exception will cause memory exhaustion."''

Therefore, the language itself does not guarantee that an attempt to throw an exception is guaranteed to throw an object of the specified type; propagating a std::bad_alloc seems to be a possibility even outside of the scope of Boost Exception.
</string>
+											</pair>
+											<pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-9</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
+												<size>17</size>
                                                                                                 <variant>2</variant>
-												<string>|<<:) foo_info(foo);
    throw e; //Compile error: boost::(:link </string>
+												<string>(:auto !!!:)

The following example demonstrates how errno can be stored in exception objects using Boost Exception:

[@#include <(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-25</id>
+														<id>-77</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) is abstract
    }@]

The correct code is:

[@catch( boost::(:link </string>
+												<string>:)>
#include <iostream>

typedef boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-25</id>
+														<id>-26</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) & e )
    {
    e (:link </string>
+												<string>:)<struct tag_my_info,int> my_info; //(1)

struct my_error: virtual boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>|<<:) foo_info(foo);
    throw; //Okay, re-throwing the original exception object.
    }@]

!!!What is the space overhead of the boost::exception base class?

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>:), virtual std::exception { }; //(2)

void
f()
    {
    throw my_error() << my_info(42); //(3)
    }@]

First, we instantiate the (:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-25</id>
+														<id>-26</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) does not by itself cause dynamic memory allocations.

Deriving from boost::(:link </string>
+												<string>:) template using a unique identifier -- tag_my_info, and the type of the info it identifies -- int. This provides compile-time type safety for the various values stored in exception objects.

Second, we define class my_error, which derives from boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
@@ -7253,279 +7237,295 @@
                                                                                                         </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.

!!!What is the speed overhead of the boost::exception base class?

Throwing objects that derive from boost::exception does not have any speed overhead by itself.

Deriving from boost::(:link </string>
+												<string>:).

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>-25</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) enables any data to be added to exceptions, which internally uses constructs that can be considered quite heavy (such as std::map and std::string.) This is still negligible compared to the typical overhead of throwing and handling of exceptions.

!!!Should I use boost::throw_exception or BOOST_THROW_EXCEPTION or just throw?

The benefit of calling boost::(:link </string>
+												<string>|operator<<:) to store values in exception objects at the point of the throw.

The stored my_info value can be recovered at a later time like this:

[@// ...continued

void
g()
    {
    try
        {
        f();
        }
    catch(
    my_error & x )
        {
        if( int const * mi=boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-70</id>
+														<id>-20</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>:)<my_info>(x) )
            std::cerr << "My info: " << *mi;
        }
    }@]

The (:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-25</id>
+														<id>-20</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) and that it is compatible with boost::(:link </string>
-												<variant>1</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.
</string>
+											</pair>
+											<pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-53</id>
+														<id>-10</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
+												<size>7</size>
                                                                                                 <variant>2</variant>
-												<string>:).

The (:link </string>
+												<string>(:auto !!!:)

(:include decl:)

!!!!Effects:

* Default constructor: initializes an empty boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-66</id>
+														<id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) macro also results in a call to boost::(:link </string>
+												<string>:) object.
* Copy constructor: initializes a boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-70</id>
+														<id>-25</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>:) object which shares ownership with x of all data added through (:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-34</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) to compose a more useful, if not user-friendly message.

Typical use of boost::(:link </string>
-												<variant>1</variant>
+												<string> mod="/":), including data that is added at a future time.

!!!!Throws:

Nothing.
</string>
+											</pair>
+											<pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-34</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
+												<size>7</size>
                                                                                                 <variant>2</variant>
-												<string>:) is:

[@catch( boost::exception & e )
    {
    std::cerr << "OMG!" << boost::diagnostic_information(e);
    }
catch( ... )
    {
    std::cerr << "OMG!!!";
    }@]

This is a possible message it may display, the first line is only possible if (:link </string>
+												<string>(:auto !!!:)

(:include synopsis:)

!!!!Requirements:

E must be boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-66</id>
+														<id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) is used:

[@example_io.cpp(70): Throw in function class boost::shared_ptr<struct _iobuf> __cdecl my_fopen(const char *,const char *)
Dynamic exception type: class boost::exception_detail::clone_impl<class fopen_error>
std::exception::what: example_io error
[struct boost::(:link </string>
+												<string>:), or a type that derives (indirectly) from boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-32</id>
+														<id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:)_ *] = fopen
[struct boost::(:link </string>
+												<string>:).

!!!!Postcondition:

A copy of v is stored into x. If x already contains data of type (:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-13</id>
+														<id>-26</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:)_ *] = 2, "No such file or directory"
[struct boost::(:link </string>
-												<variant>1</variant>
+												<string>:)<Tag,T>, that data is overwritten. Basic exception safety guarantee.

!!!!Returns:

x.

(:include throws:)
</string>
+											</pair>
+											<pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-72</id>
+														<id>-12</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
+												<size>11</size>
                                                                                                 <variant>2</variant>
-												<string>:)_ *] = tmp1.txt
[struct boost::(:link </string>
+												<string>!!!!Example:

this is a possible output from the (:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-22</id>
+														<id>-34</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:)_ *] = rb@]
!!!Why is boost::exception integrated in boost::throw_exception?

The boost::(:link </string>
+												<string>:) function, as used in ''libs/exception/example/example_io.cpp:''

[@example_io.cpp(70): Throw in function class boost::shared_ptr<struct _iobuf> __cdecl my_fopen(const char *,const char *)
Dynamic exception type: class boost::exception_detail::clone_impl<struct fopen_error>
std::exception::what: example_io error
[struct boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-70</id>
+														<id>-32</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>:)_ *] = fopen
[struct boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-25</id>
+														<id>-13</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) as a base of any exception passed to boost::(:link </string>
+												<string>:)_ *] = 2, "No such file or directory"
[struct boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-70</id>
+														<id>-72</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.

The problem is that users of Boost Exception can't by themselves cause a library to throw types that derive from boost::(:link </string>
+												<string>:)_ *] = tmp1.txt
[struct boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-25</id>
+														<id>-22</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:), and without this they can't use any of the Boost Exception facilities.

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>
+												<string>:)_ *] = rb@]
</string>
+											</pair>
+											<pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-21</id>
+														<id>-13</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
+												<size>7</size>
                                                                                                 <variant>2</variant>
-												<string>:), but this requires that Boost Serialization throws exceptions using boost::(:link </string>
+												<string>(:auto !!!:)

(:include synopsis:)

This type is designed to be used as a standard (:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-59</id>
+														<id>-26</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:). If Boost Serialization calls boost::(:link </string>
+												<string>:) instance for transporting a relevant errno value in exceptions deriving from boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-70</id>
+														<id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) to throw, this behavior happens automatically and transparently.

The cost of this integration is:

* In terms of space: a pointer and 3 ints are added to the static size of exception objects.
* In terms of speed: the pointer is initialized to null at the point of the throw.
* In terms of coupling: about 400 self-contained lines of C++ with no external includes.

!!!Why use operator<< overload for adding info to exceptions?

Before throwing an object of type that derives from boost::(:link </string>
+												<string>:).

!!!Example:

(:include </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-25</id>
+														<id>-60</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:), it is often desirable to add one or more (:link </string>
-												<variant>1</variant>
+												<string>:)
</string>
+											</pair>
+											<pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-26</id>
+														<id>-14</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
+												<size>1</size>
                                                                                                 <variant>2</variant>
-												<string>:) objects in it. The syntactic sugar provided by (:link </string>
-												<variant>1</variant>
+												<string>(:auto !!!:)

(:include synopsis:)

!!!!Requirements:

This function must not be called outside of a catch block.

!!!!Returns:

A pointer of type E to the current exception object, or null if the current exception object can not be converted to E *.

!!!!Throws:

Nothing.
</string>
+											</pair>
+											<pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-15</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
+												<size>1</size>
                                                                                                 <variant>2</variant>
-												<string>:) allows this to be done directly in a throw expression:

[@throw error() (:link </string>
-												<variant>1</variant>
+												<string>(:auto !!:)

!!!Synopsis

(:include synopsis:)
</string>
+											</pair>
+											<pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
+												<size>1</size>
                                                                                                 <variant>2</variant>
-												<string>|<<:) foo_info(foo) (:link </string>
-												<variant>1</variant>
+												<string>(:auto !!:)

!!!Synopsis

(:include synopsis:)
</string>
+											</pair>
+											<pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-17</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
+												<size>3</size>
                                                                                                 <variant>2</variant>
-												<string>|<<:) bar_info(bar);@]

which saves typing compared to this possible alternative:

[@error e;
e.add(foo_info(foo));
e.add(bar_info(bar));
throw e;@]

and looks better than something like:

[@throw error().add(foo_info(foo)).add(bar_info(bar));@]

!!!Why is operator<< allowed to throw?

This question is referring to the following issue. Consider this throw statement example:

[@throw file_open_error() (:link </string>
+												<string>(:auto !!!:)

(:include synopsis:)

!!!!Effects:

Stores a copy of v in the </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-26</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>|<<:) file_name(fn);@]

The intention here is to throw a file_open_error, however if (:link </string>
-												<variant>1</variant>
+												<string> object.

(:include throws:)
</string>
+											</pair>
+											<pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-6</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
+												<size>7</size>
                                                                                                 <variant>2</variant>
-												<string> mod="/":) fails to copy the std::string contained in the file_name (:link </string>
+												<string>(:auto !!!:)

Deriving from boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-26</id>
+														<id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:) wrapper, a std::bad_alloc could propagate instead. This behavior seems undesirable to some programmers.

Bjarne Stroustrup, The C++ Programming Language, 3rd Edition, page 371:

->''"Throwing an exception requires an object to throw.  A C++ implementation is required to have enough spare memory to be able to throw bad_alloc in case of memory exhaustion.  However, it is possible that throwing some other exception will cause memory exhaustion."''

Therefore, the language itself does not guarantee that an attempt to throw an exception is guaranteed to throw an object of the specified type; propagating a std::bad_alloc seems to be a possibility even outside of the scope of Boost Exception.
</string>
-											</pair>
-											<pair>
+												<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.

In other words: with boost::(:link </string>
+												<variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-17</id>
+														<id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>3</size>
                                                                                                 <variant>2</variant>
-												<string>(:auto !!!:)

(:include synopsis:)

!!!!Effects:

Stores a copy of v in the </string>
+												<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:

[@struct exception_base: virtual std::exception, virtual boost::(:link </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-26</id>
+														<id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string> object.

(:include throws:)
</string>
+												<string>:) { };
struct io_error: virtual exception_base { };
struct file_error: virtual io_error { };
struct read_error: virtual io_error { };
struct file_read_error: virtual file_error, virtual read_error { };@]

Using this approach, exception types become a simple tagging system for categorizing errors and selecting failures in exception handlers.
</string>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
@@ -7536,7 +7536,7 @@
                                                                                                 </weak_ptr>
                                                                                                 <size>1</size>
                                                                                                 <variant>2</variant>
-												<string>(:auto !!:)

!!!Synopsis

(:include synopsis:)
</string>
+												<string>(:auto !:)

This is an alphabetical list of all Boost Exception documentation pages.

(:pagelist fmt="index" except_tags="index noindex" mod="w":)
</string>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
@@ -7608,7 +7608,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -7951,7 +7951,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -7998,7 +7998,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -8016,7 +8016,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-15</id>
+														<id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -8034,7 +8034,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-15</id>
+														<id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -8052,7 +8052,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-15</id>
+														<id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -8070,7 +8070,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -8097,7 +8097,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -8160,7 +8160,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -8300,7 +8300,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-10</id>
+														<id>-5</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -8318,7 +8318,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-11</id>
+														<id>-7</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -8336,7 +8336,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-9</id>
+														<id>-6</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -8399,7 +8399,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -8507,7 +8507,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-16</id>
+														<id>-14</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -8570,7 +8570,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-12</id>
+														<id>-8</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -8579,7 +8579,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-8</id>
+														<id>-18</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -8626,7 +8626,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -8752,7 +8752,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-5</id>
+														<id>-12</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -8790,7 +8790,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-15</id>
+														<id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -8799,7 +8799,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-15</id>
+														<id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -9060,7 +9060,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-18</id>
+														<id>-15</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -9069,7 +9069,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-18</id>
+														<id>-15</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -9237,7 +9237,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-9</id>
+														<id>-6</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -10002,7 +10002,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -10047,7 +10047,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-5</id>
+														<id>-12</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -10783,7 +10783,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-7</id>
+														<id>-9</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -11028,7 +11028,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-6</id>
+														<id>-7</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -11037,7 +11037,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-7</id>
+														<id>-8</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -11046,7 +11046,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-8</id>
+														<id>-9</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -11055,7 +11055,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-9</id>
+														<id>-10</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -11064,16 +11064,18 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-10</id>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>0</size>
+												<size>1</size>
+												<variant>2</variant>
+												<string>!!!!Throws:

std::bad_alloc, or any exception emitted by the T copy constructor.
</string>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-13</id>
+														<id>-12</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -11082,18 +11084,16 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-14</id>
+														<id>-13</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>1</size>
-												<variant>2</variant>
-												<string>!!!!Throws:

std::bad_alloc, or any exception emitted by the T copy constructor.
</string>
+												<size>0</size>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-11</id>
+														<id>-14</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -11120,21 +11120,21 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-12</id>
+														<id>-17</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>0</size>
+												<size>1</size>
+												<variant>2</variant>
+												<string>!!!!Throws:

Any exception emitted by v's copy constructor.</string>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-17</id>
+														<id>-6</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>1</size>
-												<variant>2</variant>
-												<string>!!!!Throws:

Any exception emitted by v's copy constructor.</string>
+												<size>0</size>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
@@ -11732,7 +11732,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-6</id>
+														<id>-7</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -11741,7 +11741,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-7</id>
+														<id>-8</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -11750,25 +11750,45 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-8</id>
+														<id>-9</id>
+													</shared_ptr>
+												</weak_ptr>
+												<size>0</size>
+											</pair>
+											<pair>
+												<weak_ptr>
+													<expired>0</expired>
+													<shared_ptr>
+														<id>-10</id>
+													</shared_ptr>
+												</weak_ptr>
+												<size>0</size>
+											</pair>
+											<pair>
+												<weak_ptr>
+													<expired>0</expired>
+													<shared_ptr>
+														<id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>0</size>
-											</pair>
-											<pair>
+												<size>3</size>
+												<variant>2</variant>
+												<string>`#include <(:link </string>
+												<variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-9</id>
+														<id>-57</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>0</size>
+												<variant>2</variant>
+												<string>:)>\\

[@namespace
boost
    {
(:include decl pre_indent="4":)
    }@]
</string>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-10</id>
+														<id>-12</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <size>0</size>
@@ -11811,25 +11831,16 @@
                                                                                                 </weak_ptr>
                                                                                                 <size>3</size>
                                                                                                 <variant>2</variant>
-												<string>`#include <(:link </string>
+												<string>`#include <</string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-57</id>
+														<id>-55</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>:)>\\

[@namespace
boost
    {
(:include decl pre_indent="4":)
    }@]
</string>
-											</pair>
-											<pair>
-												<weak_ptr>
-													<expired>0</expired>
-													<shared_ptr>
-														<id>-11</id>
-													</shared_ptr>
-												</weak_ptr>
-												<size>0</size>
+												<string>>

[@namespace
boost
    {
(:include decl pre_indent="4":)
    }@]
</string>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
@@ -11838,38 +11849,38 @@
                                                                                                                 <id>-15</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>1</size>
+												<size>5</size>
                                                                                                 <variant>2</variant>
-												<string>[@namespace
boost
    {
(:include api pre_indent="4":)
    }@]
</string>
-											</pair>
-											<pair>
+												<string>[@#include <(:link </string>
+												<variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
                                                                                                                 <id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>3</size>
                                                                                                 <variant>2</variant>
-												<string>`#include <</string>
+												<string>:)>

namespace
boost
    {
(:include </string>
                                                                                                 <variant>1</variant>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-55</id>
+														<id>-21</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
-												<string>>

[@namespace
boost
    {
(:include decl pre_indent="4":)
    }@]
</string>
+												<string> decl pre_indent="4":)
(:include api pre_indent="4":)
    }@]
</string>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-12</id>
+														<id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<size>0</size>
+												<size>1</size>
+												<variant>2</variant>
+												<string>[@namespace
boost
    {
(:include api pre_indent="4":)
    }@]
</string>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
@@ -11895,30 +11906,19 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-18</id>
-													</shared_ptr>
-												</weak_ptr>
-												<size>5</size>
-												<variant>2</variant>
-												<string>[@#include <(:link </string>
-												<variant>1</variant>
-												<weak_ptr>
-													<expired>0</expired>
-													<shared_ptr>
-														<id>-15</id>
+														<id>-6</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<variant>2</variant>
-												<string>:)>

namespace
boost
    {
(:include </string>
-												<variant>1</variant>
+												<size>0</size>
+											</pair>
+											<pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-21</id>
+														<id>-18</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
-												<variant>2</variant>
-												<string> decl pre_indent="4":)
(:include api pre_indent="4":)
    }@]
</string>
+												<size>0</size>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
@@ -12112,7 +12112,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-15</id>
+														<id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -12152,7 +12152,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-15</id>
+														<id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -12315,7 +12315,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-15</id>
+														<id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -12422,7 +12422,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-15</id>
+														<id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -12482,7 +12482,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-15</id>
+														<id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -12689,7 +12689,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-18</id>
+														<id>-15</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -12698,7 +12698,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-18</id>
+														<id>-15</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -12718,7 +12718,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-15</id>
+														<id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -12974,7 +12974,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
-														<id>-15</id>
+														<id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <variant>2</variant>
@@ -13011,9 +13011,6 @@
                                                                         <id>-5</id>
                                                                 </shared_ptr>
                                                                 <shared_ptr>
-									<id>-6</id>
-								</shared_ptr>
-								<shared_ptr>
                                                                         <id>-7</id>
                                                                 </shared_ptr>
                                                                 <shared_ptr>
@@ -13026,13 +13023,16 @@
                                                                         <id>-10</id>
                                                                 </shared_ptr>
                                                                 <shared_ptr>
-									<id>-13</id>
+									<id>-11</id>
                                                                 </shared_ptr>
                                                                 <shared_ptr>
-									<id>-14</id>
+									<id>-12</id>
                                                                 </shared_ptr>
                                                                 <shared_ptr>
-									<id>-11</id>
+									<id>-13</id>
+								</shared_ptr>
+								<shared_ptr>
+									<id>-14</id>
                                                                 </shared_ptr>
                                                                 <shared_ptr>
                                                                         <id>-15</id>
@@ -13041,10 +13041,10 @@
                                                                         <id>-16</id>
                                                                 </shared_ptr>
                                                                 <shared_ptr>
-									<id>-12</id>
+									<id>-17</id>
                                                                 </shared_ptr>
                                                                 <shared_ptr>
-									<id>-17</id>
+									<id>-6</id>
                                                                 </shared_ptr>
                                                                 <shared_ptr>
                                                                         <id>-18</id>
@@ -13297,7 +13297,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
-										<id>-8</id>
+										<id>-18</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -13342,7 +13342,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
-										<id>-10</id>
+										<id>-5</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -13372,7 +13372,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
-										<id>-9</id>
+										<id>-6</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -13387,7 +13387,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
-										<id>-12</id>
+										<id>-8</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -13484,7 +13484,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
-										<id>-18</id>
+										<id>-15</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -13628,29 +13628,189 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
-										<id>-58</id>
+										<id>-58</id>
+									</shared_ptr>
+								</pair>
+								<pair>
+									<hook>
+										<stream_hook_path>
+											<size>1</size>
+											<strong>4D7009F0868C1DF4898EC6ECF9AD2CFEA98E8653B01B066106761807405D4C22</strong>
+											<weak>1416707852</weak>
+											<size>3107</size>
+											<position>527</position>
+										</stream_hook_path>
+									</hook>
+									<file>
+										<path>
+											<empty>0</empty>
+											<string>../../../../boost/exception/get_error_info.hpp</string>
+											<type>0</type>
+											<base>0</base>
+										</path>
+									</file>
+									<shared_ptr>
+										<id>-51</id>
+									</shared_ptr>
+								</pair>
+								<pair>
+									<hook>
+										<stream_hook_path>
+											<size>1</size>
+											<strong>EFEF19E7D10F02079DA9799E42DA1415CA0C815E964E88CF1A8896D49C81EC22</strong>
+											<weak>2916767056</weak>
+											<size>11964</size>
+											<position>527</position>
+										</stream_hook_path>
+									</hook>
+									<file>
+										<path>
+											<empty>0</empty>
+											<string>../../../../boost/exception/exception.hpp</string>
+											<type>0</type>
+											<base>0</base>
+										</path>
+									</file>
+									<shared_ptr>
+										<id>-74</id>
+									</shared_ptr>
+								</pair>
+								<pair>
+									<hook>
+										<stream_hook_path>
+											<size>3</size>
+											<strong>EFEF19E7D10F02079DA9799E42DA1415CA0C815E964E88CF1A8896D49C81EC22</strong>
+											<weak>2916767056</weak>
+											<size>11964</size>
+											<position>527</position>
+											<strong>E0D734FE11CFB52F1BBF35C31E84A098AC93881DEE300CDBE3F9B772F75D9B2F</strong>
+											<weak>4056200131</weak>
+											<size>2307</size>
+											<position>4436</position>
+											<strong>A94129EFD6ABBDDCD4CFDB671821F7DA103B2EA4455CF39E783D333C236D1C41</strong>
+											<weak>1035445969</weak>
+											<size>595</size>
+											<position>204</position>
+										</stream_hook_path>
+									</hook>
+									<file>
+										<path>
+											<empty>0</empty>
+											<string>../../../../boost/exception/exception.hpp</string>
+											<type>0</type>
+											<base>0</base>
+										</path>
+									</file>
+									<shared_ptr>
+										<id>-10</id>
+									</shared_ptr>
+								</pair>
+								<pair>
+									<hook>
+										<stream_hook_path>
+											<size>3</size>
+											<strong>EFEF19E7D10F02079DA9799E42DA1415CA0C815E964E88CF1A8896D49C81EC22</strong>
+											<weak>2916767056</weak>
+											<size>11964</size>
+											<position>527</position>
+											<strong>E0D734FE11CFB52F1BBF35C31E84A098AC93881DEE300CDBE3F9B772F75D9B2F</strong>
+											<weak>4056200131</weak>
+											<size>2307</size>
+											<position>4436</position>
+											<strong>28ACC7E8903AFA473B656DAD74C22C3F675AFCCA871D81AB3AB7742FDF5F1E48</strong>
+											<weak>2824899226</weak>
+											<size>2163</size>
+											<position>145</position>
+										</stream_hook_path>
+									</hook>
+									<file>
+										<path>
+											<empty>0</empty>
+											<string>../../../../boost/exception/exception.hpp</string>
+											<type>0</type>
+											<base>0</base>
+										</path>
+									</file>
+									<shared_ptr>
+										<id>-25</id>
+									</shared_ptr>
+								</pair>
+								<pair>
+									<hook>
+										<stream_hook_path>
+											<size>2</size>
+											<strong>EFEF19E7D10F02079DA9799E42DA1415CA0C815E964E88CF1A8896D49C81EC22</strong>
+											<weak>2916767056</weak>
+											<size>11964</size>
+											<position>527</position>
+											<strong>17E691632123EB67BA67D590B49EB8094F462F5A10A66A1C5438E1867EF1478E</strong>
+											<weak>765399792</weak>
+											<size>77</size>
+											<position>6878</position>
+										</stream_hook_path>
+									</hook>
+									<file>
+										<path>
+											<empty>0</empty>
+											<string>../../../../boost/exception/exception.hpp</string>
+											<type>0</type>
+											<base>0</base>
+										</path>
+									</file>
+									<shared_ptr>
+										<id>-67</id>
+									</shared_ptr>
+								</pair>
+								<pair>
+									<hook>
+										<stream_hook_path>
+											<size>2</size>
+											<strong>EFEF19E7D10F02079DA9799E42DA1415CA0C815E964E88CF1A8896D49C81EC22</strong>
+											<weak>2916767056</weak>
+											<size>11964</size>
+											<position>527</position>
+											<strong>DF9EA87B0140AACF4422F1B76F6A6A409C15F32858BBBA85A35981A824C56BA9</strong>
+											<weak>1137981799</weak>
+											<size>192</size>
+											<position>11766</position>
+										</stream_hook_path>
+									</hook>
+									<file>
+										<path>
+											<empty>0</empty>
+											<string>../../../../boost/exception/exception.hpp</string>
+											<type>0</type>
+											<base>0</base>
+										</path>
+									</file>
+									<shared_ptr>
+										<id>-59</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
-											<size>1</size>
-											<strong>4D7009F0868C1DF4898EC6ECF9AD2CFEA98E8653B01B066106761807405D4C22</strong>
-											<weak>1416707852</weak>
-											<size>3107</size>
+											<size>2</size>
+											<strong>EFEF19E7D10F02079DA9799E42DA1415CA0C815E964E88CF1A8896D49C81EC22</strong>
+											<weak>2916767056</weak>
+											<size>11964</size>
                                                                                         <position>527</position>
+											<strong>F3FB15CD82336271C6E875BC620385322777D16F0B7C233300783CE35710CCBF</strong>
+											<weak>3292878997</weak>
+											<size>282</size>
+											<position>9272</position>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
-											<string>../../../../boost/exception/get_error_info.hpp</string>
+											<string>../../../../boost/exception/exception.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
-										<id>-51</id>
+										<id>-54</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -13764,7 +13924,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
-										<id>-16</id>
+										<id>-14</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -13786,7 +13946,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
-										<id>-5</id>
+										<id>-12</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -13840,6 +14000,28 @@
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
+											<size>1</size>
+											<strong>195FF369BA559E3C0080F75321794B4808B6A278D4DEF8AEDBD9FCEBCE69C548</strong>
+											<weak>458631219</weak>
+											<size>2145</size>
+											<position>321</position>
+										</stream_hook_path>
+									</hook>
+									<file>
+										<path>
+											<empty>0</empty>
+											<string>../../../../boost/exception/info_tuple.hpp</string>
+											<type>0</type>
+											<base>0</base>
+										</path>
+									</file>
+									<shared_ptr>
+										<id>-30</id>
+									</shared_ptr>
+								</pair>
+								<pair>
+									<hook>
+										<stream_hook_path>
                                                                                         <size>2</size>
                                                                                         <strong>64A91889D0B296F554DB50496EF8036489999CD3C9A8BC181CCE1C1FD37EBB4B</strong>
                                                                                         <weak>265554338</weak>
@@ -14146,7 +14328,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
-										<id>-14</id>
+										<id>-11</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -14460,7 +14642,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
-										<id>-7</id>
+										<id>-9</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -14618,45 +14800,49 @@
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
-											<size>1</size>
-											<strong>AA363B3E599C558409A17235E029C4F635E4FDE629F763F661BDA7FA5B2D99C2</strong>
-											<weak>1494903480</weak>
-											<size>325</size>
-											<position>1300</position>
+											<size>2</size>
+											<strong>1B4417301AE3C0338C22E6D497391F51ABD459E521E7DFCE59A6EEC1372D33C2</strong>
+											<weak>202224383</weak>
+											<size>1766</size>
+											<position>600</position>
+											<strong>E0A17503B42EE12F31548A7D20F89916D734CE88B30A1BF6F9FC2D1F83A8B6F4</strong>
+											<weak>3410340567</weak>
+											<size>1734</size>
+											<position>26</position>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
-											<string>../../../../boost/throw_exception.hpp</string>
+											<string>../../../../boost/exception/info_tuple.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
-										<id>-66</id>
+										<id>-42</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <size>1</size>
-											<strong>9A6D5598D65F1C1B5F913007D1CD1A814F3CDAD07D4AF8C468A0716059B2F7CC</strong>
-											<weak>3552995087</weak>
-											<size>1405</size>
-											<position>527</position>
+											<strong>AA363B3E599C558409A17235E029C4F635E4FDE629F763F661BDA7FA5B2D99C2</strong>
+											<weak>1494903480</weak>
+											<size>325</size>
+											<position>1300</position>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
-											<string>../../../../boost/exception/info_tuple.hpp</string>
+											<string>../../../../boost/throw_exception.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
-										<id>-30</id>
+										<id>-66</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -14689,166 +14875,6 @@
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <size>1</size>
-											<strong>088B53C0FBDB55F55DCF1296B3206D748A2B2453CCFC3DAA2AA0FADD930561E7</strong>
-											<weak>3582349865</weak>
-											<size>11956</size>
-											<position>527</position>
-										</stream_hook_path>
-									</hook>
-									<file>
-										<path>
-											<empty>0</empty>
-											<string>../../../../boost/exception/exception.hpp</string>
-											<type>0</type>
-											<base>0</base>
-										</path>
-									</file>
-									<shared_ptr>
-										<id>-74</id>
-									</shared_ptr>
-								</pair>
-								<pair>
-									<hook>
-										<stream_hook_path>
-											<size>3</size>
-											<strong>088B53C0FBDB55F55DCF1296B3206D748A2B2453CCFC3DAA2AA0FADD930561E7</strong>
-											<weak>3582349865</weak>
-											<size>11956</size>
-											<position>527</position>
-											<strong>E0D734FE11CFB52F1BBF35C31E84A098AC93881DEE300CDBE3F9B772F75D9B2F</strong>
-											<weak>4056200131</weak>
-											<size>2307</size>
-											<position>4436</position>
-											<strong>A94129EFD6ABBDDCD4CFDB671821F7DA103B2EA4455CF39E783D333C236D1C41</strong>
-											<weak>1035445969</weak>
-											<size>595</size>
-											<position>204</position>
-										</stream_hook_path>
-									</hook>
-									<file>
-										<path>
-											<empty>0</empty>
-											<string>../../../../boost/exception/exception.hpp</string>
-											<type>0</type>
-											<base>0</base>
-										</path>
-									</file>
-									<shared_ptr>
-										<id>-6</id>
-									</shared_ptr>
-								</pair>
-								<pair>
-									<hook>
-										<stream_hook_path>
-											<size>3</size>
-											<strong>088B53C0FBDB55F55DCF1296B3206D748A2B2453CCFC3DAA2AA0FADD930561E7</strong>
-											<weak>3582349865</weak>
-											<size>11956</size>
-											<position>527</position>
-											<strong>E0D734FE11CFB52F1BBF35C31E84A098AC93881DEE300CDBE3F9B772F75D9B2F</strong>
-											<weak>4056200131</weak>
-											<size>2307</size>
-											<position>4436</position>
-											<strong>28ACC7E8903AFA473B656DAD74C22C3F675AFCCA871D81AB3AB7742FDF5F1E48</strong>
-											<weak>2824899226</weak>
-											<size>2163</size>
-											<position>145</position>
-										</stream_hook_path>
-									</hook>
-									<file>
-										<path>
-											<empty>0</empty>
-											<string>../../../../boost/exception/exception.hpp</string>
-											<type>0</type>
-											<base>0</base>
-										</path>
-									</file>
-									<shared_ptr>
-										<id>-25</id>
-									</shared_ptr>
-								</pair>
-								<pair>
-									<hook>
-										<stream_hook_path>
-											<size>2</size>
-											<strong>088B53C0FBDB55F55DCF1296B3206D748A2B2453CCFC3DAA2AA0FADD930561E7</strong>
-											<weak>3582349865</weak>
-											<size>11956</size>
-											<position>527</position>
-											<strong>17E691632123EB67BA67D590B49EB8094F462F5A10A66A1C5438E1867EF1478E</strong>
-											<weak>765399792</weak>
-											<size>77</size>
-											<position>6878</position>
-										</stream_hook_path>
-									</hook>
-									<file>
-										<path>
-											<empty>0</empty>
-											<string>../../../../boost/exception/exception.hpp</string>
-											<type>0</type>
-											<base>0</base>
-										</path>
-									</file>
-									<shared_ptr>
-										<id>-67</id>
-									</shared_ptr>
-								</pair>
-								<pair>
-									<hook>
-										<stream_hook_path>
-											<size>2</size>
-											<strong>088B53C0FBDB55F55DCF1296B3206D748A2B2453CCFC3DAA2AA0FADD930561E7</strong>
-											<weak>3582349865</weak>
-											<size>11956</size>
-											<position>527</position>
-											<strong>DF9EA87B0140AACF4422F1B76F6A6A409C15F32858BBBA85A35981A824C56BA9</strong>
-											<weak>1137981799</weak>
-											<size>192</size>
-											<position>11758</position>
-										</stream_hook_path>
-									</hook>
-									<file>
-										<path>
-											<empty>0</empty>
-											<string>../../../../boost/exception/exception.hpp</string>
-											<type>0</type>
-											<base>0</base>
-										</path>
-									</file>
-									<shared_ptr>
-										<id>-59</id>
-									</shared_ptr>
-								</pair>
-								<pair>
-									<hook>
-										<stream_hook_path>
-											<size>2</size>
-											<strong>088B53C0FBDB55F55DCF1296B3206D748A2B2453CCFC3DAA2AA0FADD930561E7</strong>
-											<weak>3582349865</weak>
-											<size>11956</size>
-											<position>527</position>
-											<strong>F3FB15CD82336271C6E875BC620385322777D16F0B7C233300783CE35710CCBF</strong>
-											<weak>3292878997</weak>
-											<size>282</size>
-											<position>9272</position>
-										</stream_hook_path>
-									</hook>
-									<file>
-										<path>
-											<empty>0</empty>
-											<string>../../../../boost/exception/exception.hpp</string>
-											<type>0</type>
-											<base>0</base>
-										</path>
-									</file>
-									<shared_ptr>
-										<id>-54</id>
-									</shared_ptr>
-								</pair>
-								<pair>
-									<hook>
-										<stream_hook_path>
-											<size>1</size>
                                                                                         <strong>C95CEF2E9D0BAA1E950509471062916DB849A46A19F7692BA478030E79B338EB</strong>
                                                                                         <weak>1917376632</weak>
                                                                                         <size>706</size>
@@ -14864,7 +14890,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
-										<id>-11</id>
+										<id>-7</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -14874,7 +14900,7 @@
                                                                                         <strong>9A4ECF9A49A73AED83C1565CB8C67AE1519E8AFE6818F968B4C4733CB9E86CEF</strong>
                                                                                         <weak>1615599655</weak>
                                                                                         <size>68</size>
-											<position>227</position>
+											<position>321</position>
                                                                                         <strong>34F0583BC8DE767CE2D79721E1F956895E43E5397473B1050F59BE7E26C773DB</strong>
                                                                                         <weak>805836816</weak>
                                                                                         <size>66</size>
@@ -14890,33 +14916,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
-										<id>-15</id>
-									</shared_ptr>
-								</pair>
-								<pair>
-									<hook>
-										<stream_hook_path>
-											<size>2</size>
-											<strong>F7633FDCF6615C0199645701EE6E7ACE5CBCD7A7CF6838573791E91ABB3C09F2</strong>
-											<weak>1668435395</weak>
-											<size>1332</size>
-											<position>600</position>
-											<strong>A1F443AF571973A12005D2F7D4AE09A32AAF686FEEAE272EC21512A65EB943E8</strong>
-											<weak>3879093659</weak>
-											<size>1300</size>
-											<position>26</position>
-										</stream_hook_path>
-									</hook>
-									<file>
-										<path>
-											<empty>0</empty>
-											<string>../../../../boost/exception/info_tuple.hpp</string>
-											<type>0</type>
-											<base>0</base>
-										</path>
-									</file>
-									<shared_ptr>
-										<id>-42</id>
+										<id>-16</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -14992,16 +14992,16 @@
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
-											<id>-6</id>
+											<id>-7</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
-									<string>function</string>
+									<string>tutorial</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
-											<id>-7</id>
+											<id>-9</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
                                                                         <string>noalso noindex tutorial</string>
@@ -15010,43 +15010,43 @@
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
-											<id>-8</id>
+											<id>-10</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
-									<string></string>
+									<string>function</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
-											<id>-13</id>
+											<id>-11</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
-									<string>error_info_instance noalso type</string>
+									<string>error_info free function</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
-											<id>-14</id>
+											<id>-13</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
-									<string>error_info free function</string>
+									<string>error_info_instance noalso type</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
-											<id>-11</id>
+											<id>-14</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
-									<string>tutorial</string>
+									<string>function</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
-											<id>-15</id>
+											<id>-16</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
                                                                         <string></string>
@@ -15055,19 +15055,19 @@
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
-											<id>-16</id>
+											<id>-17</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
-									<string>function</string>
+									<string>function member</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
-											<id>-17</id>
+											<id>-18</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
-									<string>function member</string>
+									<string></string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>