diff --git a/doc/boost-exception.html b/doc/boost-exception.html index b6164f0..4f34922 100644 --- a/doc/boost-exception.html +++ b/doc/boost-exception.html @@ -119,7 +119,8 @@ boost template <class T> ---unspecified--- enable_error_info( T const & x ); - std::string diagnostic_information( std::exception const & x ); + template <class T> + std::string diagnostic_information( T const & x ); class unknown_exception: @@ -202,7 +203,7 @@ boost

Nothing.

Notes:

Transporting of Arbitrary Data to the Catch Site

error_info

@@ -426,12 +427,15 @@ boost
namespace
 boost
     {
-    std::string diagnostic_information( std::exception const & x );
+    template <class T>
+    std::string diagnostic_information( T const & x );
     }
-

Requirements:

-

The diagnostic_information function must not be called outside of a catch block.

-

Returns:

-

If dynamic_cast<boost::exception const *>(&x) is not null, the returned string is initialized by a call to exception::diagnostic_information; otherwise, the returned string combines the output of x.what() and typeid(x).name().

+

Returns:

+

Platform-specific diagnostic information about x.

+

Notes:

+
  • If dynamic_cast<std::exception const *>(&x) is not null, the returned string includes the output from std::exception::what.
  • +
  • If dynamic_cast<boost::exception const *>(&x) is not null, the returned string includes the output from boost::exception::diagnostic_information.
  • +

Throwing Exceptions

throw_exception

@@ -456,7 +460,9 @@ boost
  • If BOOST_NO_EXCEPTIONS is not defined, boost::throw_exception(e) is equivalent to throw boost::enable_current_exception(boost::enable_error_info(e)), unless BOOST_EXCEPTION_DISABLE is defined, in which case boost::throw_exception(e) is equivalent to throw e;
  • If BOOST_NO_EXCEPTIONS is defined, the function is left undefined, and the user is expected to supply an appropriate definition. Callers of throw_exception are allowed to assume that the function never returns; therefore, if the user-defined throw_exception returns, the behavior is undefined.
-
+

Acknowledgements

+

Peter Dimov has been continuously influencing the design and evolution of Boost Exception. Also thanks to Tobias Schwinger, Tom Brinkman, Pavel Vozenilek and everyone who participated in the review process.

+

See Also:

diff --git a/doc/diagnostic_information.html b/doc/diagnostic_information.html index 8b048f6..83c55f4 100644 --- a/doc/diagnostic_information.html +++ b/doc/diagnostic_information.html @@ -25,12 +25,15 @@
namespace
 boost
     {
-    std::string diagnostic_information( std::exception const & x );
+    template <class T>
+    std::string diagnostic_information( T const & x );
     }
-

Requirements:

-

The diagnostic_information function must not be called outside of a catch block.

-

Returns:

-

If dynamic_cast<boost::exception const *>(&x) is not null, the returned string is initialized by a call to exception::diagnostic_information; otherwise, the returned string combines the output of x.what() and typeid(x).name().

+

Returns:

+

Platform-specific diagnostic information about x.

+

Notes:

+
  • If dynamic_cast<std::exception const *>(&x) is not null, the returned string includes the output from std::exception::what.
  • +
  • If dynamic_cast<boost::exception const *>(&x) is not null, the returned string includes the output from boost::exception::diagnostic_information.
  • +

See Also:

Boost Exception
diff --git a/doc/exception.html b/doc/exception.html index 46f04f0..a29151d 100644 --- a/doc/exception.html +++ b/doc/exception.html @@ -68,7 +68,7 @@ boost

Nothing.

Notes:


See Also:

diff --git a/doc/exception_diagnostic_information.html b/doc/exception_diagnostic_information.html index 8cb0610..28a8660 100644 --- a/doc/exception_diagnostic_information.html +++ b/doc/exception_diagnostic_information.html @@ -28,7 +28,7 @@

Nothing.

Notes:


See Also:

diff --git a/doc/source/boost-exception.reno b/doc/source/boost-exception.reno index 79b74f3..1fc2c9c 100644 --- a/doc/source/boost-exception.reno +++ b/doc/source/boost-exception.reno @@ -48,55 +48,6 @@ reno_context - - - - - - 2 - 78F37A2801CADB066084578244BC93958EAD33507F30C07353EA7D161FFBF973 - 2089604779 - 11016 - 511 - 4B6ED02EA5B5A3B326838794C37ED01C5DC3E8D89FA78E62B9F7A0C78D4DB6FD - 2715164371 - 116 - 10894 - - - - - - 0 - ../../../../boost/exception_ptr.hpp - 0 - 0 - - - - - <string>rethrow_exception</string> - - - - - - - - - 1 - 2 - (:include include:) (:auto also:) - - - - - 0 - - 6 - - reno_context - @@ -142,50 +93,7 @@ 0 - 7 - - reno_context - - - - - - - 1 - 5373E336DC4892A41D31694BCA1146382FC3137819A04689CA1F9FFAF1CFAB3B - 4050491732 - 466 - 307 - - - - - - 0 - ../../example/cloning_1.cpp - 0 - 0 - - - - - <string>using enable_current_exception at the time of the throw</string> - - - using_enable_cloning - - - - - - 0 - - - - - 0 - - 8 + 6 reno_context @@ -230,6 +138,98 @@ (:include include:) (:auto also:) + + + 0 + + 7 + + reno_context + + + + + + + 2 + 78F37A2801CADB066084578244BC93958EAD33507F30C07353EA7D161FFBF973 + 2089604779 + 11016 + 511 + 4B6ED02EA5B5A3B326838794C37ED01C5DC3E8D89FA78E62B9F7A0C78D4DB6FD + 2715164371 + 116 + 10894 + + + + + + 0 + ../../../../boost/exception_ptr.hpp + 0 + 0 + + + + + <string>rethrow_exception</string> + + + + + + + + + 1 + 2 + (:include include:) (:auto also:) + + + + + 0 + + 8 + + reno_context + + + + + + + 1 + 5373E336DC4892A41D31694BCA1146382FC3137819A04689CA1F9FFAF1CFAB3B + 4050491732 + 466 + 307 + + + + + + 0 + ../../example/cloning_1.cpp + 0 + 0 + + + + + <string>using enable_current_exception at the time of the throw</string> + + + using_enable_cloning + + + + + + 0 + + 0 @@ -238,6 +238,51 @@ reno_context + + + + + + 1 + CAD6C404CB725D336A44920D2341ECA131149AB02C368B59028F8147F16737BF + 2258638601 + 94 + 227 + + + + + + 0 + ../../../../boost/exception/info_tuple.hpp + 0 + 0 + + + + + <string>boost/exception/info_tuple.hpp</string> + + + exception_error_info_group_hpp + + + + + + 1 + 2 + (:include include:) (:auto also:) + + + + + 0 + + 10 + + reno_context + @@ -279,55 +324,6 @@ (:include include:) (:auto also:) - - - 0 - - 10 - - reno_context - - - - - - - 2 - 353C90D92FFBB5A5616E5A9FAA19868B8234159FB714A1631B4E415B941DC9D3 - 3466161861 - 4362 - 775 - CF9032A2CB14D66F0F004C0AFDE2BB94321F405D6D95AC46EC5350AB4843A4F1 - 1073329133 - 715 - 243 - - - - - - 0 - ../../../../boost/exception/info.hpp - 0 - 0 - - - - - <string>error_info</string> - - - - - - - - - 1 - 2 - (:include include:) (:auto also:) - - 0 @@ -336,179 +332,6 @@ reno_context - - - - - - 1 - D5ABFC95B9593A7346BF1C09827808A9AE95C161469B25D50305FCD7AC1A6FC2 - 556762679 - 1647 - 323 - - - - - - 0 - ../../../../boost/exception/enable_current_exception.hpp - 0 - 0 - - - - - <string>boost/exception/enable_current_exception.hpp</string> - - - exception_enable_exception_cloning_hpp - - - - - - 1 - 2 - (:include include:) (:auto also:) - - - - - 0 - - 12 - - reno_context - - - - - - - 1 - CAB4D823BD4720B71E1CA5BE482AC95B42A9E07CD5E08671EA23184635F281A2 - 3077708282 - 89 - 323 - - - - - - 0 - ../../../../boost/exception/error_info.hpp - 0 - 0 - - - - - <string>boost/exception/error_info.hpp</string> - - - exception_error_info_value_hpp - - - - - - 1 - 2 - (:include include:) (:auto also:) - - - - - 0 - - 13 - - reno_context - - - - - - - 0 - - - - - - 1 - - - - - <string>transporting of arbitrary data to the catch site</string> - - - tutorial_transporting_data - - - - - - 1 - 2 - (:include include:) (:auto also:) - - - - - 0 - - 14 - - reno_context - - - - - - - 1 - EE6990C848AF26755A4A3D327073CC8122B3D2C0D00DA2B0F33E4D8805ACB911 - 465181157 - 11204 - 323 - - - - - - 0 - ../../../../boost/exception_ptr.hpp - 0 - 0 - - - - - <string>boost/exception_ptr.hpp</string> - - - exception_cloning_hpp - - - - - - 1 - 2 - (:include include:) (:auto also:) - - - - - 0 - - 15 - - reno_context - @@ -550,6 +373,183 @@ (:include include:) (:auto also:) + + + 0 + + 12 + + reno_context + + + + + + + 2 + 353C90D92FFBB5A5616E5A9FAA19868B8234159FB714A1631B4E415B941DC9D3 + 3466161861 + 4362 + 775 + CF9032A2CB14D66F0F004C0AFDE2BB94321F405D6D95AC46EC5350AB4843A4F1 + 1073329133 + 715 + 243 + + + + + + 0 + ../../../../boost/exception/info.hpp + 0 + 0 + + + + + <string>error_info</string> + + + + + + + + + 1 + 2 + (:include include:) (:auto also:) + + + + + 0 + + 13 + + reno_context + + + + + + + 1 + D5ABFC95B9593A7346BF1C09827808A9AE95C161469B25D50305FCD7AC1A6FC2 + 556762679 + 1647 + 323 + + + + + + 0 + ../../../../boost/exception/enable_current_exception.hpp + 0 + 0 + + + + + <string>boost/exception/enable_current_exception.hpp</string> + + + exception_enable_exception_cloning_hpp + + + + + + 1 + 2 + (:include include:) (:auto also:) + + + + + 0 + + 14 + + reno_context + + + + + + + 1 + CAB4D823BD4720B71E1CA5BE482AC95B42A9E07CD5E08671EA23184635F281A2 + 3077708282 + 89 + 323 + + + + + + 0 + ../../../../boost/exception/error_info.hpp + 0 + 0 + + + + + <string>boost/exception/error_info.hpp</string> + + + exception_error_info_value_hpp + + + + + + 1 + 2 + (:include include:) (:auto also:) + + + + + 0 + + 15 + + reno_context + + + + + + + 0 + + + + + + 1 + + + + + <string>transporting of arbitrary data to the catch site</string> + + + tutorial_transporting_data + + + + + + 1 + 2 + (:include include:) (:auto also:) + + 0 @@ -558,6 +558,94 @@ reno_context + + + + + + 1 + EE6990C848AF26755A4A3D327073CC8122B3D2C0D00DA2B0F33E4D8805ACB911 + 465181157 + 11204 + 323 + + + + + + 0 + ../../../../boost/exception_ptr.hpp + 0 + 0 + + + + + <string>boost/exception_ptr.hpp</string> + + + exception_cloning_hpp + + + + + + 1 + 2 + (:include include:) (:auto also:) + + + + + 0 + + 17 + + reno_context + + + + + + + 1 + E444EE9697EEADFDE0767E1D0242FC0E70D98E61FB1F0FFA099648DE509B82F3 + 94503238 + 773 + 374 + + + + + + 0 + ../../example/info_tuple.cpp + 0 + 0 + + + + + <string>adding grouped data to exceptions</string> + + + grouping_data + + + + + + 0 + + + + + 0 + + 18 + + reno_context + @@ -599,7 +687,7 @@ 0 - 17 + 19 reno_context @@ -644,7 +732,52 @@ 0 - 18 + 20 + + reno_context + + + + + + + 1 + 4DC5257313CB18D2FB860A51C10E0CA1F26C0130EF7884BEA62F2B9202796B14 + 1113469887 + 1807 + 91 + + + + + + 0 + ../../../../boost/throw_exception.hpp + 0 + 0 + + + + + <string>boost/throw_exception.hpp</string> + + + throw_exception_hpp + + + + + + 1 + 2 + (:include include:) (:auto also:) + + + + + 0 + + 21 reno_context @@ -689,7 +822,56 @@ 0 - 19 + 22 + + reno_context + + + + + + + 2 + F7633FDCF6615C0199645701EE6E7ACE5CBCD7A7CF6838573791E91ABB3C09F2 + 1668435395 + 1332 + 396 + A1F443AF571973A12005D2F7D4AE09A32AAF686FEEAE272EC21512A65EB943E8 + 3879093659 + 1300 + 26 + + + + + + 0 + ../../../../boost/exception/info_tuple.hpp + 0 + 0 + + + + + <string>operator<</tuple</string> + + + + + + + + + 1 + 2 + (:include include:) (:auto also:) + + + + + 0 + + 23 reno_context @@ -734,7 +916,7 @@ 0 - 20 + 24 reno_context @@ -777,7 +959,7 @@ 0 - 21 + 25 reno_context @@ -826,7 +1008,7 @@ 0 - 22 + 26 reno_context @@ -871,95 +1053,7 @@ 0 - 23 - - reno_context - - - - - - - 1 - E444EE9697EEADFDE0767E1D0242FC0E70D98E61FB1F0FFA099648DE509B82F3 - 94503238 - 773 - 374 - - - - - - 0 - ../../example/info_tuple.cpp - 0 - 0 - - - - - <string>adding grouped data to exceptions</string> - - - grouping_data - - - - - - 0 - - - - - 0 - - 24 - - reno_context - - - - - - - 1 - CAD6C404CB725D336A44920D2341ECA131149AB02C368B59028F8147F16737BF - 2258638601 - 94 - 227 - - - - - - 0 - ../../../../boost/exception/info_tuple.hpp - 0 - 0 - - - - - <string>boost/exception/info_tuple.hpp</string> - - - exception_error_info_group_hpp - - - - - - 1 - 2 - (:include include:) (:auto also:) - - - - - 0 - - 25 + 27 reno_context @@ -1012,7 +1106,7 @@ 0 - 26 + 28 reno_context @@ -1057,7 +1151,7 @@ 0 - 27 + 29 reno_context @@ -1102,7 +1196,7 @@ 0 - 28 + 30 reno_context @@ -1147,56 +1241,7 @@ 0 - 29 - - reno_context - - - - - - - 2 - F7633FDCF6615C0199645701EE6E7ACE5CBCD7A7CF6838573791E91ABB3C09F2 - 1668435395 - 1332 - 396 - A1F443AF571973A12005D2F7D4AE09A32AAF686FEEAE272EC21512A65EB943E8 - 3879093659 - 1300 - 26 - - - - - - 0 - ../../../../boost/exception/info_tuple.hpp - 0 - 0 - - - - - <string>operator<</tuple</string> - - - - - - - - - 1 - 2 - (:include include:) (:auto also:) - - - - - 0 - - 30 + 31 reno_context @@ -1245,7 +1290,7 @@ 0 - 31 + 32 reno_context @@ -1298,7 +1343,7 @@ 0 - 32 + 33 reno_context @@ -1347,7 +1392,7 @@ 0 - 33 + 34 reno_context @@ -1404,7 +1449,7 @@ 0 - 34 + 35 reno_context @@ -1447,7 +1492,7 @@ 0 - 35 + 36 reno_context @@ -1486,51 +1531,6 @@ 0 - - - 0 - - 36 - - reno_context - - - - - - - 1 - 4DC5257313CB18D2FB860A51C10E0CA1F26C0130EF7884BEA62F2B9202796B14 - 1113469887 - 1807 - 91 - - - - - - 0 - ../../../../boost/throw_exception.hpp - 0 - 0 - - - - - <string>boost/throw_exception.hpp</string> - - - throw_exception_hpp - - - - - - 1 - 2 - (:include include:) (:auto also:) - - 0 @@ -1848,7 +1848,7 @@ 0 - -13 + -15 2 @@ -1857,7 +1857,7 @@ 0 - -27 + -29 2 @@ -1875,7 +1875,7 @@ 0 - -17 + -19 2 @@ -1884,7 +1884,7 @@ 0 - -21 + -25 2 @@ -1893,142 +1893,7 @@ 0 - -10 - - - 2 - :) ###(:link - 1 - - 0 - - -15 - - - 2 - :) ###(:link - 1 - - 0 - - -29 - - - 2 - :) ###(:link - 1 - - 0 - - -6 - - - 2 - :) ###(:link - 1 - - 0 - - -40 - - - 2 - :) ###(:link - 1 - - 0 - - -22 - - - 2 - :) ##(:link http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html|N2179:) Transporting of Exceptions between Threads ###(:link - 1 - - 0 - - -9 - - - 2 - :) ###(:link - 1 - - 0 - - -38 - - - 2 - :) ###(:link - 1 - - 0 - - -30 - - - 2 - :) ###(:link - 1 - - 0 - - -8 - - - 2 - :) ###(:link - 1 - - 0 - - -5 - - - 2 - :) ###(:link - 1 - - 0 - - -37 - - - 2 - :) ##(:link - 1 - - 0 - - -32 - - - 2 - :) ##(:link - 1 - - 0 - - -43 - - - 2 - :) ##Headers ###(:link - 1 - - 0 - - -18 - - - 2 - :) ###(:link - 1 - - 0 - - -26 + -12 2 @@ -2046,7 +1911,7 @@ 0 - -16 + -22 2 @@ -2055,7 +1920,7 @@ 0 - -12 + -5 2 @@ -2064,7 +1929,142 @@ 0 - -19 + -40 + + + 2 + :) ###(:link + 1 + + 0 + + -26 + + + 2 + :) ##(:link http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html|N2179:) Transporting of Exceptions between Threads ###(:link + 1 + + 0 + + -10 + + + 2 + :) ###(:link + 1 + + 0 + + -38 + + + 2 + :) ###(:link + 1 + + 0 + + -31 + + + 2 + :) ###(:link + 1 + + 0 + + -6 + + + 2 + :) ###(:link + 1 + + 0 + + -7 + + + 2 + :) ###(:link + 1 + + 0 + + -37 + + + 2 + :) ##(:link + 1 + + 0 + + -33 + + + 2 + :) ##(:link + 1 + + 0 + + -43 + + + 2 + :) ##Headers ###(:link + 1 + + 0 + + -21 + + + 2 + :) ###(:link + 1 + + 0 + + -28 + + + 2 + :) ###(:link + 1 + + 0 + + -13 + + + 2 + :) ###(:link + 1 + + 0 + + -18 + + + 2 + :) ###(:link + 1 + + 0 + + -14 + + + 2 + :) ###(:link + 1 + + 0 + + -23 2 @@ -2114,7 +2114,7 @@ 0 - -28 + -30 2 @@ -2123,7 +2123,7 @@ 0 - -24 + -9 2 @@ -2132,7 +2132,7 @@ 0 - -14 + -16 2 @@ -2141,7 +2141,7 @@ 0 - -36 + -20 2 @@ -2154,12 +2154,12 @@ 2 - :) !!Synopsis `#include <(:link + :) !!Synopsis `#include <(:link 1 0 - -18 + -21 2 @@ -2168,7 +2168,34 @@ 0 - -19 + -23 + + + 2 + api pre_indent="4":) (:include + 1 + + 0 + + -30 + + + 2 + api pre_indent="4":) (:include + 1 + + 0 + + -9 + + + 2 + api pre_indent="4":) (:include + 1 + + 0 + + -18 2 @@ -2183,15 +2210,6 @@ 2 api pre_indent="4":) (:include 1 - - 0 - - -24 - - - 2 - api pre_indent="4":) (:include - 1 0 @@ -2204,7 +2222,7 @@ 0 - -26 + -13 2 @@ -2213,25 +2231,7 @@ 0 - -14 - - - 2 - api pre_indent="4":) (:include - 1 - - 0 - - -11 - - - 2 - api pre_indent="4":) (:include - 1 - - 0 - - -36 + -20 2 @@ -2240,7 +2240,7 @@ 0 - -21 + -25 2 @@ -2249,7 +2249,7 @@ 0 - -10 + -12 2 @@ -2258,34 +2258,7 @@ 0 - -15 - - - 2 - :) (:include - 1 - - 0 - - -29 - - - 2 - :) (:include - 1 - - 0 - - -6 - - - 2 - :) (:include - 1 - - 0 - - -40 + -11 2 @@ -2298,42 +2271,6 @@ 2 - :) !!Transporting of Exceptions between Threads (:include - 1 - - 0 - - -9 - - - 2 - :) (:include - 1 - - 0 - - -38 - - - 2 - :) (:include - 1 - - 0 - - -30 - - - 2 - :) (:include - 1 - - 0 - - -8 - - - 2 :) (:include 1 @@ -2345,6 +2282,69 @@ 2 :) (:include 1 + + 0 + + -40 + + + 2 + :) (:include + 1 + + 0 + + -26 + + + 2 + :) !!Transporting of Exceptions between Threads (:include + 1 + + 0 + + -10 + + + 2 + :) (:include + 1 + + 0 + + -38 + + + 2 + :) (:include + 1 + + 0 + + -31 + + + 2 + :) (:include + 1 + + 0 + + -6 + + + 2 + :) (:include + 1 + + 0 + + -7 + + + 2 + :) (:include + 1 0 @@ -2357,7 +2357,7 @@ 0 - -32 + -33 2 @@ -2370,7 +2370,7 @@ 2 - :) + :) !!Acknowledgements Peter Dimov has been continuously influencing the design and evolution of Boost Exception. Also thanks to Tobias Schwinger, Tom Brinkman, Pavel Vozenilek and everyone who participated in the review process. @@ -2476,18 +2476,7 @@ - 3 - 2 - [@template <class Tag,class T> class (:link - 1 - - 0 - - -10 - - - 2 - :) { public: typedef T value_type; error_info( value_type const & ); };@] + 0 @@ -2509,7 +2498,18 @@ - 0 + 3 + 2 + [@template <class Tag,class T> class (:link + 1 + + 0 + + -12 + + + 2 + :) { public: typedef T value_type; error_info( value_type const & ); };@] @@ -2608,45 +2608,7 @@ - 9 - 2 - [@class (:link - 1 - - 0 - - -21 - - - 2 - :) { public: (:include - 1 - - 0 - - -31 - - - 2 - decl pre_indent="4":) protected: (:include - 1 - - 0 - - -25 - - - 2 - decl pre_indent="4":) (:include - 1 - - 0 - - -33 - - - 2 - decl pre_indent="4":) };@] + 0 @@ -2690,7 +2652,45 @@ - 0 + 9 + 2 + [@class (:link + 1 + + 0 + + -25 + + + 2 + :) { public: (:include + 1 + + 0 + + -32 + + + 2 + decl pre_indent="4":) protected: (:include + 1 + + 0 + + -27 + + + 2 + decl pre_indent="4":) (:include + 1 + + 0 + + -34 + + + 2 + decl pre_indent="4":) };@] @@ -2968,7 +2968,18 @@ - 0 + 3 + 2 + [@(:include + 1 + + 0 + + -22 + + + 2 + decl:)@] @@ -2989,6 +3000,28 @@ -11 + + 0 + + + + + 0 + + -12 + + + + 0 + + + + + 0 + + -13 + + 3 2 @@ -3008,7 +3041,7 @@ 0 - -12 + -14 @@ -3019,76 +3052,7 @@ 0 - -10 - - - 2 - decl:)@] - - - - - 0 - - -13 - - - - 0 - - - - - 0 - - -14 - - - - 11 - 2 - [@(:include - 1 - - 0 - - -37 - - - 2 - decl:) (:include - 1 - - 0 - - -9 - - - 2 - decl:) (:include - 1 - - 0 - - -8 - - - 2 - decl:) (:include - 1 - - 0 - - -30 - - - 2 - decl:) (:include - 1 - - 0 - - -5 + -12 2 @@ -3114,14 +3078,50 @@ - 3 + 11 2 [@(:include 1 0 - -40 + -37 + + + 2 + decl:) (:include + 1 + + 0 + + -10 + + + 2 + decl:) (:include + 1 + + 0 + + -6 + + + 2 + decl:) (:include + 1 + + 0 + + -31 + + + 2 + decl:) (:include + 1 + + 0 + + -7 2 @@ -3146,65 +3146,66 @@ -18 + + 3 + 2 + [@(:include + 1 + + 0 + + -40 + + + 2 + decl:)@] + + + + + 0 + + -19 + + + + 0 + + + + + 0 + + -20 + + + + 3 + 2 + [@(:include + 1 + + 0 + + -43 + + + 2 + decl:)@] + + + + + 0 + + -21 + + 21 2 [@#include < 1 - - 0 - - -26 - - - 2 - > #include < - 1 - - 0 - - -11 - - - 2 - > #include < - 1 - - 0 - - -16 - - - 2 - > #include < - 1 - - 0 - - -12 - - - 2 - > #include < - 1 - - 0 - - -19 - - - 2 - > #include < - 1 - - 0 - - -44 - - - 2 - > #include < - 1 0 @@ -3217,7 +3218,16 @@ 0 - -24 + -13 + + + 2 + > #include < + 1 + + 0 + + -18 2 @@ -3235,55 +3245,56 @@ 0 - -36 + -23 2 - >@] - - - - - 0 - - -19 - - - - 3 - 2 - [@(:include + > #include < 1 0 - -21 + -44 2 - def:)@] - - - - - 0 - - -20 - - - - 0 - - - - - 0 - - -21 - - - - 0 + > #include < + 1 + + 0 + + -30 + + + 2 + > #include < + 1 + + 0 + + -9 + + + 2 + > #include < + 1 + + 0 + + -16 + + + 2 + > #include < + 1 + + 0 + + -20 + + + 2 + >@] @@ -3305,7 +3316,18 @@ - 0 + 3 + 2 + [@(:include + 1 + + 0 + + -25 + + + 2 + def:)@] @@ -3316,18 +3338,7 @@ - 3 - 2 - [@(:include - 1 - - 0 - - -29 - - - 2 - decl:)@] + 0 @@ -3349,18 +3360,7 @@ - 3 - 2 - [@(:include - 1 - - 0 - - -32 - - - 2 - decl:)@] + 0 @@ -3382,32 +3382,14 @@ - 7 + 3 2 [@(:include 1 0 - -10 - - - 2 - def:) (:include - 1 - - 0 - - -22 - - - 2 - decl:) (:include - 1 - - 0 - - -15 + -33 2 @@ -3433,7 +3415,36 @@ - 0 + 7 + 2 + [@(:include + 1 + + 0 + + -12 + + + 2 + def:) (:include + 1 + + 0 + + -26 + + + 2 + decl:) (:include + 1 + + 0 + + -11 + + + 2 + decl:)@] @@ -3499,18 +3510,7 @@ - 3 - 2 - [@(:include - 1 - - 0 - - -43 - - - 2 - decl:)@] + 0 @@ -3605,7 +3605,7 @@ 0 - -6 + -5 2 @@ -3633,37 +3633,6 @@ -5 - - 5 - 2 - [@void (:link - 1 - - 0 - - -5 - - - 2 - :)( (:link - 1 - - 0 - - -9 - - - 2 - :) const & ep ); - - - - - 0 - - -6 - - 3 2 @@ -3672,7 +3641,7 @@ 0 - -6 + -5 2 @@ -3683,18 +3652,7 @@ 0 - -7 - - - - 0 - - - - - 0 - - -8 + -6 @@ -3705,7 +3663,7 @@ 0 - -9 + -10 2 @@ -3714,7 +3672,7 @@ 0 - -8 + -6 2 @@ -3725,22 +3683,53 @@ 0 - -9 + -7 - 3 + 5 2 - [@typedef ---unspecified--- (:link + [@void (:link 1 0 - -9 + -7 2 - :);@] + :)( (:link + 1 + + 0 + + -10 + + + 2 + :) const & ep ); + + + + + 0 + + -8 + + + + 0 + + + + + 0 + + -9 + + + + 0 @@ -3753,7 +3742,7 @@ 3 2 - [@template <class Tag,class T> class (:link + [@typedef ---unspecified--- (:link 1 0 @@ -3773,7 +3762,27 @@ - 0 + 5 + 2 + [@template <class E, class Tag, class T> E const & (:link + 1 + + 0 + + -11 + + + 2 + |operator<<:)( E const & x, (:link + 1 + + 0 + + -12 + + + 2 + :)<Tag,T> const & v );@] @@ -3784,7 +3793,18 @@ - 0 + 3 + 2 + [@template <class Tag,class T> class (:link + 1 + + 0 + + -12 + + + 2 + :);@] @@ -3817,27 +3837,7 @@ - 5 - 2 - [@template <class E, class Tag, class T> E const & (:link - 1 - - 0 - - -15 - - - 2 - |operator<<:)( E const & x, (:link - 1 - - 0 - - -10 - - - 2 - :)<Tag,T> const & v );@] + 0 @@ -3903,18 +3903,7 @@ - 3 - 2 - [@class - 1 - - 0 - - -21 - - - 2 - ;@] + 0 @@ -3925,36 +3914,9 @@ - 9 + 7 2 - [@typedef (:link - 1 - - 0 - - -10 - - - 2 - :)<struct tag_throw_function,char const *> throw_function; typedef (:link - 1 - - 0 - - -10 - - - 2 - :)<struct tag_throw_file,char const *> throw_file; typedef (:link - 1 - - 0 - - -10 - - - 2 - :)<struct tag_throw_line,int> throw_line; #define (:link + [@template <class E, class Tag1, class T1, ..., class TagN, class TN> E const & (:link 1 0 @@ -3963,7 +3925,25 @@ 2 - :)\ ::boost::throw_function(BOOST_CURRENT_FUNCTION) <<\ ::boost::throw_file(__FILE__) <<\ ::boost::throw_line((int)__LINE__)@] + |operator<<:)( E const & x, (:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html|tuple:)< (:link + 1 + + 0 + + -12 + + + 2 + :)<Tag1,T1>, ..., (:link + 1 + + 0 + + -12 + + + 2 + :)<TagN,TN> > const & v );@] @@ -3996,9 +3976,9 @@ - 7 + 3 2 - [@(:link + [@class 1 0 @@ -4007,25 +3987,7 @@ 2 - mod="m":)(); (:link - 1 - - 0 - - -25 - - - 2 - mod="m":)( (:link - 1 - - 0 - - -21 - - - 2 - :) const & x );@] + ;@] @@ -4036,7 +3998,45 @@ - 0 + 9 + 2 + [@typedef (:link + 1 + + 0 + + -12 + + + 2 + :)<struct tag_throw_function,char const *> throw_function; typedef (:link + 1 + + 0 + + -12 + + + 2 + :)<struct tag_throw_file,char const *> throw_file; typedef (:link + 1 + + 0 + + -12 + + + 2 + :)<struct tag_throw_line,int> throw_line; #define (:link + 1 + + 0 + + -26 + + + 2 + :)\ ::boost::throw_function(BOOST_CURRENT_FUNCTION) <<\ ::boost::throw_file(__FILE__) <<\ ::boost::throw_line((int)__LINE__)@] @@ -4047,7 +4047,36 @@ - 0 + 7 + 2 + [@(:link + 1 + + 0 + + -27 + + + 2 + mod="m":)(); (:link + 1 + + 0 + + -27 + + + 2 + mod="m":)( (:link + 1 + + 0 + + -25 + + + 2 + :) const & x );@] @@ -4069,36 +4098,7 @@ - 7 - 2 - [@template <class E, class Tag1, class T1, ..., class TagN, class TN> E const & (:link - 1 - - 0 - - -29 - - - 2 - |operator<<:)( E const & x, (:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html|tuple:)< (:link - 1 - - 0 - - -10 - - - 2 - :)<Tag1,T1>, ..., (:link - 1 - - 0 - - -10 - - - 2 - :)<TagN,TN> > const & v );@] + 0 @@ -4109,27 +4109,7 @@ - 5 - 2 - [@(:link - 1 - - 0 - - -9 - - - 2 - :) (:link - 1 - - 0 - - -30 - - - 2 - :)();@] + 0 @@ -4140,9 +4120,18 @@ - 3 + 5 2 - [@virtual char const * (:link + [@(:link + 1 + + 0 + + -10 + + + 2 + :) (:link 1 0 @@ -4151,7 +4140,7 @@ 2 - mod="m":)() const throw();@] + :)();@] @@ -4164,7 +4153,7 @@ 3 2 - [@template <class T> std::string (:link + [@virtual char const * (:link 1 0 @@ -4173,7 +4162,7 @@ 2 - :)( T const & x );@] + mod="m":)() const throw();@] @@ -4186,7 +4175,7 @@ 3 2 - [@(:link + [@template <class T> std::string (:link 1 0 @@ -4195,7 +4184,7 @@ 2 - mod="m":)();@] + :)( T const & x );@] @@ -4206,7 +4195,18 @@ - 0 + 3 + 2 + [@(:link + 1 + + 0 + + -34 + + + 2 + mod="m":)();@] @@ -4255,7 +4255,7 @@ 0 - -21 + -25 2 @@ -4402,19 +4402,6 @@ -5 - - 1 - 2 - (:auto !!!:) (:include synopsis:) !!!!Precondition: ep shall not be null. !!!!Throws: The exception to which ep refers. - - - - - 0 - - -6 - - 9 2 @@ -4423,7 +4410,7 @@ 0 - -10 + -12 2 @@ -4432,7 +4419,7 @@ 0 - -6 + -5 2 @@ -4441,7 +4428,7 @@ 0 - -21 + -25 2 @@ -4450,13 +4437,35 @@ 0 - -15 + -11 2 |operator<<:) to store values in exception objects.) The shared_ptr is valid even after x has been destroyed. !!!!Throws: Nothing. + + + 0 + + -6 + + + + 3 + 2 + (:auto !!!:) (:include synopsis:) !!!!Effects: As if try { throw e; } catch( ... ) { return (:link + 1 + + 0 + + -31 + + + 2 + :)(); } + + 0 @@ -4464,6 +4473,19 @@ -7 + + 1 + 2 + (:auto !!!:) (:include synopsis:) !!!!Precondition: ep shall not be null. !!!!Throws: The exception to which ep refers. + + + + + 0 + + -8 + + 13 2 @@ -4472,7 +4494,7 @@ 0 - -11 + -13 2 @@ -4481,7 +4503,7 @@ 0 - -28 + -30 2 @@ -4490,7 +4512,7 @@ 0 - -21 + -25 2 @@ -4517,35 +4539,13 @@ 0 - -21 + -25 2 :). - - - 0 - - -8 - - - - 3 - 2 - (:auto !!!:) (:include synopsis:) !!!!Effects: As if try { throw e; } catch( ... ) { return (:link - 1 - - 0 - - -30 - - - 2 - :)(); } - - 0 @@ -4554,45 +4554,9 @@ - 9 + 1 2 - (:auto !!!:) (:include synopsis:) The (:link - 1 - - 0 - - -9 - - - 2 - :) type can be used to refer to a copy of an exception object. It is Default Constructible, Copy Constructible, Assignable and Equality Comparable; (:link - 1 - - 0 - - -9 - - - 2 - :)'s operations do not throw. Two instances of (:link - 1 - - 0 - - -9 - - - 2 - :) are equivalent and compare equal if and only if they refer to the same exception. The default constructor of (:link - 1 - - 0 - - -9 - - - 2 - :) produces the null value of the type. The null value is equivalent only to itself. + (:auto !!:) !!!Synopsis (:include synopsis:) @@ -4603,9 +4567,9 @@ - 25 + 9 2 - (:auto !!!:) (:include synopsis:) !!!!Requirements: T must have accessible copy constructor and must not be a reference (there is no requirement that T's copy constructor does not throw.) !!!!Description: This class template is used to associate a Tag type with a value type T. Objects of type (:link + (:auto !!!:) (:include synopsis:) The (:link 1 0 @@ -4614,34 +4578,7 @@ 2 - :)<Tag,T> can be passed to (:link - 1 - - 0 - - -15 - - - 2 - |operator<<:) to be stored in objects of type boost::(:link - 1 - - 0 - - -21 - - - 2 - :). !!!!Note: The header <(:link - 1 - - 0 - - -12 - - - 2 - :)> provides a declaration of the (:link + :) type can be used to refer to a copy of an exception object. It is Default Constructible, Copy Constructible, Assignable and Equality Comparable; (:link 1 0 @@ -4650,16 +4587,7 @@ 2 - :) template, which is sufficient for the purpose of typedefing an instance for specific Tag and T, like this: [@#include <(:link - 1 - - 0 - - -12 - - - 2 - :)> typedef boost::(:link + :)'s operations do not throw. Two instances of (:link 1 0 @@ -4668,7 +4596,7 @@ 2 - :)<struct tag_errno,int> errno_info;@] Of course, to actually add an (:link + :) are equivalent and compare equal if and only if they refer to the same exception. The default constructor of (:link 1 0 @@ -4677,43 +4605,7 @@ 2 - :) object to (:link - 1 - - 0 - - -21 - - - 2 - mod="p":) using (:link - 1 - - 0 - - -15 - - - 2 - |operator<<:), or to retrieve it using (:link - 1 - - 0 - - -6 - - - 2 - :), you must first #include <(:link - 1 - - 0 - - -28 - - - 2 - :)>. + :) produces the null value of the type. The null value is equivalent only to itself. @@ -4724,9 +4616,36 @@ - 1 + 7 2 - (:auto !!:) !!!Synopsis (:include synopsis:) + (:auto !!!:) (:include synopsis:) !!!!Requirements: E must be boost::(:link + 1 + + 0 + + -25 + + + 2 + :), or a type that derives (indirectly) from boost::(:link + 1 + + 0 + + -25 + + + 2 + :). !!!!Effects: Stores a copy of v into x. If x already contains data of type (:link + 1 + + 0 + + -12 + + + 2 + :)<Tag,T>, that data is overwritten. !!!!Returns: x. (:include throws:) @@ -4737,9 +4656,117 @@ - 1 + 25 2 - (:auto !!:) !!!Synopsis (:include synopsis:) + (:auto !!!:) (:include synopsis:) !!!!Requirements: T must have accessible copy constructor and must not be a reference (there is no requirement that T's copy constructor does not throw.) !!!!Description: This class template is used to associate a Tag type with a value type T. Objects of type (:link + 1 + + 0 + + -12 + + + 2 + :)<Tag,T> can be passed to (:link + 1 + + 0 + + -11 + + + 2 + |operator<<:) to be stored in objects of type boost::(:link + 1 + + 0 + + -25 + + + 2 + :). !!!!Note: The header <(:link + 1 + + 0 + + -14 + + + 2 + :)> provides a declaration of the (:link + 1 + + 0 + + -12 + + + 2 + :) template, which is sufficient for the purpose of typedefing an instance for specific Tag and T, like this: [@#include <(:link + 1 + + 0 + + -14 + + + 2 + :)> typedef boost::(:link + 1 + + 0 + + -12 + + + 2 + :)<struct tag_errno,int> errno_info;@] Of course, to actually add an (:link + 1 + + 0 + + -12 + + + 2 + :) object to (:link + 1 + + 0 + + -25 + + + 2 + mod="p":) using (:link + 1 + + 0 + + -11 + + + 2 + |operator<<:), or to retrieve it using (:link + 1 + + 0 + + -5 + + + 2 + :), you must first #include <(:link + 1 + + 0 + + -30 + + + 2 + :)>. @@ -4750,54 +4777,9 @@ - 11 + 1 2 - (:auto !!:) All exception types that derive from boost::(:link - 1 - - 0 - - -21 - - - 2 - :) can be used as type-safe containers of arbitrary data objects, while complying with the no-throw requirements (15.5.1) of the ANSI C++ standard for exception types. Data can be added to a boost::(:link - 1 - - 0 - - -21 - - - 2 - :) at the time of the throw, or at a later time. (:include - 1 - - 0 - - -34 - - - 2 - :) (:include - 1 - - 0 - - -20 - - - 2 - :) (:include - 1 - - 0 - - -23 - - - 2 - :) + (:auto !!:) !!!Synopsis (:include synopsis:) @@ -4821,36 +4803,54 @@ - 7 + 11 2 - (:auto !!!:) (:include synopsis:) !!!!Requirements: E must be boost::(:link + (:auto !!:) All exception types that derive from boost::(:link 1 0 - -21 + -25 2 - :), or a type that derives (indirectly) from boost::(:link + :) can be used as type-safe containers of arbitrary data objects, while complying with the no-throw requirements (15.5.1) of the ANSI C++ standard for exception types. Data can be added to a boost::(:link 1 0 - -21 + -25 2 - :). !!!!Effects: Stores a copy of v into x. If x already contains data of type (:link + :) at the time of the throw, or at a later time. (:include 1 0 - -10 + -35 2 - :)<Tag,T>, that data is overwritten. !!!!Returns: x. (:include throws:) + :) (:include + 1 + + 0 + + -24 + + + 2 + :) (:include + 1 + + 0 + + -17 + + + 2 + :) @@ -4874,99 +4874,63 @@ - 21 + 13 2 - (:auto !!:) Class boost::(:link + (:auto !!!:) The code snippet below demonstrates how boost::(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html|tuple:) can be used to bundle the name of the function that failed, together with the reported errno so that they can be added to exception objects more conveniently together: [@#include <(:link 1 0 - -21 + -9 2 - :) provides a virtual member function (:link + :)> #include <boost/shared_ptr.hpp> #include <stdio.h> #include <string> #include <errno.h> typedef boost::(:link 1 0 - -31 + -12 2 - mod="m":), with a signature similar to the familiar std::exception::what function. The default implementation returns a string value that is not presentable as a friendly user message, but because it is generated automatically, it is useful for debugging or logging purposes. Here is an example: [@#include <(:link + :)<struct tag_file_name,std::string> file_name_info; typedef boost::(:link 1 0 - -18 + -12 2 - :)> #include <iostream> void f(); //throws unknown types that derive from boost::(:link + :)<struct tag_function,char const *> function_info; typedef boost::(:link 1 0 - -21 + -12 2 - :). void g() { try { f(); } catch( boost::(:link + :)<struct tag_errno,int> errno_info; typedef boost::tuple<function_info,errno_info> clib_failure; class file_open_error: public boost::(:link 1 0 - -21 + -25 2 - :) & e ) { std::cerr << e.(:link + :) { }; boost::shared_ptr<FILE> file_open( char const * name, char const * mode ) { if( FILE * f=fopen(name,mode) ) return boost::shared_ptr<FILE>(f,fclose); else throw file_open_error() << file_name_info(name) << clib_failure("fopen",errno); }@] Note that the members of a boost::(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html|tuple:) are stored separately in exception objects; they can only be retrieved individually, using (:link 1 0 - -31 + -5 2 - mod="m":)(); } }@] The (:link - 1 - - 0 - - -31 - - - 2 - mod="m":) member function iterates over all data objects stored in the boost::(:link - 1 - - 0 - - -21 - - - 2 - :) through (:link - 1 - - 0 - - -15 - - - 2 - |operator<<:). The returned string is constructed by converting each data object to string and then concatenating these strings together. When the (:link - 1 - - 0 - - -10 - - - 2 - :)<Tag,T> template is instantiated, the system attempts overload resolution for an unqualified call to to_string(x), where x is of type T. If this is successful, the to_string overload is expected to return std::string and is used to convert objects of type T to string. Otherwise, the system attempts overload resolution for s << x, where s is a std::ostringstream and x is of type T. If this is successful, the operator<< overload is used to convert objects of type T to string. Otherwise the system is unable to convert objects of type T to string, and an unspecified stub string value is used without issuing a compile error. + :). @@ -4990,9 +4954,99 @@ - 1 + 21 2 - (:auto !!:) !!!Synopsis (:include synopsis:) + (:auto !!:) Class boost::(:link + 1 + + 0 + + -25 + + + 2 + :) provides a virtual member function (:link + 1 + + 0 + + -32 + + + 2 + mod="m":), with a signature similar to the familiar std::exception::what function. The default implementation returns a string value that is not presentable as a friendly user message, but because it is generated automatically, it is useful for debugging or logging purposes. Here is an example: [@#include <(:link + 1 + + 0 + + -21 + + + 2 + :)> #include <iostream> void f(); //throws unknown types that derive from boost::(:link + 1 + + 0 + + -25 + + + 2 + :). void g() { try { f(); } catch( boost::(:link + 1 + + 0 + + -25 + + + 2 + :) & e ) { std::cerr << e.(:link + 1 + + 0 + + -32 + + + 2 + mod="m":)(); } }@] The (:link + 1 + + 0 + + -32 + + + 2 + mod="m":) member function iterates over all data objects stored in the boost::(:link + 1 + + 0 + + -25 + + + 2 + :) through (:link + 1 + + 0 + + -11 + + + 2 + |operator<<:). The returned string is constructed by converting each data object to string and then concatenating these strings together. When the (:link + 1 + + 0 + + -12 + + + 2 + :)<Tag,T> template is instantiated, the system attempts overload resolution for an unqualified call to to_string(x), where x is of type T. If this is successful, the to_string overload is expected to return std::string and is used to convert objects of type T to string. Otherwise, the system attempts overload resolution for s << x, where s is a std::ostringstream and x is of type T. If this is successful, the operator<< overload is used to convert objects of type T to string. Otherwise the system is unable to convert objects of type T to string, and an unspecified stub string value is used without issuing a compile error. @@ -5003,99 +5057,9 @@ - 21 + 1 2 - (:auto !!!:) Sometimes the throw site does not have all the information that is needed at the catch site to make sense of what went wrong. Here is an example: [@#include <stdio.h> #include <string> class file_read_error { public: explicit file_read_error( std::string const & fn ): fn_(fn) { }; std::string const & file_name() const { return fn_; } private: std::string fn_; }; void file_read( FILE * f, void * buffer, size_t size ) { if( size!=fread(buffer,1,size,f) ) throw file_read_error("????"); }@] We have defined an exception class file_read_error which can store a file name, so that when we catch a file_read_error object, we know which file the failure is related to. However, the file_read function does not have the file name at the time of the throw; all it has is a FILE handle. One possible solution is to not use FILE handles directly. We could have our own class file which stores both a FILE handle and a file name, and pass that to file_read. However, this could be problematic if we communicate with 3rd party code that does not use our class file (probably because they have their own similar class.) A better solution is to make class file_read_error derive (possibly indirectly) from boost::(:link - 1 - - 0 - - -21 - - - 2 - :), and free the file_read function from the burden of storing the file name in exceptions it throws: [@#include <(:link - 1 - - 0 - - -18 - - - 2 - :)> #include <stdio.h> #include <errno.h> typedef boost::(:link - 1 - - 0 - - -10 - - - 2 - :)<struct tag_errno,int> errno_info; class file_read_error: public boost::(:link - 1 - - 0 - - -21 - - - 2 - :) { }; void file_read( FILE * f, void * buffer, size_t size ) { if( size!=fread(buffer,1,size,f) ) throw file_read_error() << errno_info(errno); }@] If file_read detects a failure, it throws an exception which contains the information that is available at the time, namely the errno. Other relevant information, such as the file name, can be added in a context higher up the call stack, where it is known naturally: [@#include <(:link - 1 - - 0 - - -18 - - - 2 - :)> #include <boost/shared_ptr.hpp> #include <stdio.h> #include <string> typedef boost::(:link - 1 - - 0 - - -10 - - - 2 - :)<struct tag_file_name,std::string> file_name_info; boost::shared_ptr<FILE> file_open( char const * file_name, char const * mode ); void file_read( FILE * f, void * buffer, size_t size ); void parse_file( char const * file_name ) { boost::shared_ptr<FILE> f = file_open(file_name,"rb"); assert(f); try { char buf[1024]; file_read( f.get(), buf, sizeof(buf) ); } catch( boost::(:link - 1 - - 0 - - -21 - - - 2 - :) & e ) { e << file_name_info(file_name); throw; } }@] The above function is (almost) exception-neutral -- if an exception is emitted by any function call within the try block, parse_file does not need to do any real work, but it intercepts any boost::(:link - 1 - - 0 - - -21 - - - 2 - :) object, stores the file name, and re-throws using a throw-expression with no operand (15.1.6). The rationale for catching any boost::(:link - 1 - - 0 - - -21 - - - 2 - :) object is that the file name is relevant to any failure that occurs in parse_file, ''even if the failure is unrelated to file I/O''. As usual, the stored data can be retrieved using (:link - 1 - - 0 - - -6 - - - 2 - :). + (:auto !!:) !!!Synopsis (:include synopsis:) @@ -5106,90 +5070,9 @@ - 19 + 1 2 - (:auto !!!:) (:include synopsis:) Class boost::(:link - 1 - - 0 - - -21 - - - 2 - :) is designed to be used as a universal base for user-defined exception types. An object of any type deriving from boost::(:link - 1 - - 0 - - -21 - - - 2 - :) can store data of arbitrary types, using the (:link - 1 - - 0 - - -10 - - - 2 - :) wrapper and (:link - 1 - - 0 - - -15 - - - 2 - |operator<<:). To retrieve data from a boost::(:link - 1 - - 0 - - -21 - - - 2 - :) object, use the (:link - 1 - - 0 - - -6 - - - 2 - :) function template. (:include - 1 - - 0 - - -25 - - - 2 - :) (:include - 1 - - 0 - - -33 - - - 2 - :) (:include - 1 - - 0 - - -31 - - - 2 - :) + (:auto !!:) !!!Synopsis (:include synopsis:) @@ -5200,36 +5083,27 @@ - 7 + 5 2 - (:auto !!!:) (:include synopsis:) This macro is designed to be used with (:link + (:auto !!!:) (:include synopsis:) !!!!Requirements: E must be boost::(:link 1 0 - -15 + -25 2 - |operator<<:) when throwing a boost::(:link + :), or a type that derives (indirectly) from boost::(:link 1 0 - -21 + -25 2 - :), to store information about the location of the throw statement. It can be chained with other (:link - 1 - - 0 - - -10 - - - 2 - mod="p":) in a single throw expression. + :). !!!!Effects: Equivalent to x << v.(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html#accessing_elements|get:)<0>() << ... << v.(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html#accessing_elements|get:)<N>(). !!!!Returns: x. (:include throws:) @@ -5240,63 +5114,9 @@ - 13 + 1 2 - (:auto !!!:) The code snippet below demonstrates how boost::(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html|tuple:) can be used to bundle the name of the function that failed, together with the reported errno so that they can be added to exception objects more conveniently together: [@#include <(:link - 1 - - 0 - - -24 - - - 2 - :)> #include <boost/shared_ptr.hpp> #include <stdio.h> #include <string> #include <errno.h> typedef boost::(:link - 1 - - 0 - - -10 - - - 2 - :)<struct tag_file_name,std::string> file_name_info; typedef boost::(:link - 1 - - 0 - - -10 - - - 2 - :)<struct tag_function,char const *> function_info; typedef boost::(:link - 1 - - 0 - - -10 - - - 2 - :)<struct tag_errno,int> errno_info; typedef boost::tuple<function_info,errno_info> clib_failure; class file_open_error: public boost::(:link - 1 - - 0 - - -21 - - - 2 - :) { }; boost::shared_ptr<FILE> file_open( char const * name, char const * mode ) { if( FILE * f=fopen(name,mode) ) return boost::shared_ptr<FILE>(f,fclose); else throw file_open_error() << file_name_info(name) << clib_failure("fopen",errno); }@] Note that the members of a boost::(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html|tuple:) are stored separately in exception objects; they can only be retrieved individually, using (:link - 1 - - 0 - - -6 - - - 2 - :). + (:auto !!:) !!!Synopsis (:include synopsis:) @@ -5307,9 +5127,99 @@ - 1 + 21 2 - (:auto !!:) !!!Synopsis (:include synopsis:) + (:auto !!!:) Sometimes the throw site does not have all the information that is needed at the catch site to make sense of what went wrong. Here is an example: [@#include <stdio.h> #include <string> class file_read_error { public: explicit file_read_error( std::string const & fn ): fn_(fn) { }; std::string const & file_name() const { return fn_; } private: std::string fn_; }; void file_read( FILE * f, void * buffer, size_t size ) { if( size!=fread(buffer,1,size,f) ) throw file_read_error("????"); }@] We have defined an exception class file_read_error which can store a file name, so that when we catch a file_read_error object, we know which file the failure is related to. However, the file_read function does not have the file name at the time of the throw; all it has is a FILE handle. One possible solution is to not use FILE handles directly. We could have our own class file which stores both a FILE handle and a file name, and pass that to file_read. However, this could be problematic if we communicate with 3rd party code that does not use our class file (probably because they have their own similar class.) A better solution is to make class file_read_error derive (possibly indirectly) from boost::(:link + 1 + + 0 + + -25 + + + 2 + :), and free the file_read function from the burden of storing the file name in exceptions it throws: [@#include <(:link + 1 + + 0 + + -21 + + + 2 + :)> #include <stdio.h> #include <errno.h> typedef boost::(:link + 1 + + 0 + + -12 + + + 2 + :)<struct tag_errno,int> errno_info; class file_read_error: public boost::(:link + 1 + + 0 + + -25 + + + 2 + :) { }; void file_read( FILE * f, void * buffer, size_t size ) { if( size!=fread(buffer,1,size,f) ) throw file_read_error() << errno_info(errno); }@] If file_read detects a failure, it throws an exception which contains the information that is available at the time, namely the errno. Other relevant information, such as the file name, can be added in a context higher up the call stack, where it is known naturally: [@#include <(:link + 1 + + 0 + + -21 + + + 2 + :)> #include <boost/shared_ptr.hpp> #include <stdio.h> #include <string> typedef boost::(:link + 1 + + 0 + + -12 + + + 2 + :)<struct tag_file_name,std::string> file_name_info; boost::shared_ptr<FILE> file_open( char const * file_name, char const * mode ); void file_read( FILE * f, void * buffer, size_t size ); void parse_file( char const * file_name ) { boost::shared_ptr<FILE> f = file_open(file_name,"rb"); assert(f); try { char buf[1024]; file_read( f.get(), buf, sizeof(buf) ); } catch( boost::(:link + 1 + + 0 + + -25 + + + 2 + :) & e ) { e << file_name_info(file_name); throw; } }@] The above function is (almost) exception-neutral -- if an exception is emitted by any function call within the try block, parse_file does not need to do any real work, but it intercepts any boost::(:link + 1 + + 0 + + -25 + + + 2 + :) object, stores the file name, and re-throws using a throw-expression with no operand (15.1.6). The rationale for catching any boost::(:link + 1 + + 0 + + -25 + + + 2 + :) object is that the file name is relevant to any failure that occurs in parse_file, ''even if the failure is unrelated to file I/O''. As usual, the stored data can be retrieved using (:link + 1 + + 0 + + -5 + + + 2 + :). @@ -5319,6 +5229,140 @@ -25 + + 19 + 2 + (:auto !!!:) (:include synopsis:) Class boost::(:link + 1 + + 0 + + -25 + + + 2 + :) is designed to be used as a universal base for user-defined exception types. An object of any type deriving from boost::(:link + 1 + + 0 + + -25 + + + 2 + :) can store data of arbitrary types, using the (:link + 1 + + 0 + + -12 + + + 2 + :) wrapper and (:link + 1 + + 0 + + -11 + + + 2 + |operator<<:). To retrieve data from a boost::(:link + 1 + + 0 + + -25 + + + 2 + :) object, use the (:link + 1 + + 0 + + -5 + + + 2 + :) function template. (:include + 1 + + 0 + + -27 + + + 2 + :) (:include + 1 + + 0 + + -34 + + + 2 + :) (:include + 1 + + 0 + + -32 + + + 2 + :) + + + + + 0 + + -26 + + + + 7 + 2 + (:auto !!!:) (:include synopsis:) This macro is designed to be used with (:link + 1 + + 0 + + -11 + + + 2 + |operator<<:) when throwing a boost::(:link + 1 + + 0 + + -25 + + + 2 + :), to store information about the location of the throw statement. It can be chained with other (:link + 1 + + 0 + + -12 + + + 2 + mod="p":) in a single throw expression. + + + + + 0 + + -27 + + 7 2 @@ -5327,7 +5371,7 @@ 0 - -21 + -25 2 @@ -5336,7 +5380,7 @@ 0 - -21 + -25 2 @@ -5345,7 +5389,7 @@ 0 - -15 + -11 2 @@ -5356,7 +5400,7 @@ 0 - -26 + -28 @@ -5369,7 +5413,7 @@ 0 - -27 + -29 @@ -5380,7 +5424,7 @@ 0 - -21 + -25 2 @@ -5398,7 +5442,7 @@ 0 - -21 + -25 2 @@ -5407,7 +5451,7 @@ 0 - -18 + -21 2 @@ -5416,7 +5460,7 @@ 0 - -10 + -12 2 @@ -5425,7 +5469,7 @@ 0 - -10 + -12 2 @@ -5434,7 +5478,7 @@ 0 - -10 + -12 2 @@ -5461,7 +5505,7 @@ 0 - -21 + -25 2 @@ -5470,7 +5514,7 @@ 0 - -15 + -11 2 @@ -5479,7 +5523,7 @@ 0 - -21 + -25 2 @@ -5488,7 +5532,7 @@ 0 - -13 + -15 2 @@ -5499,7 +5543,7 @@ 0 - -28 + -30 @@ -5512,38 +5556,7 @@ 0 - -29 - - - - 5 - 2 - (:auto !!!:) (:include synopsis:) !!!!Requirements: E must be boost::(:link - 1 - - 0 - - -21 - - - 2 - :), or a type that derives (indirectly) from boost::(:link - 1 - - 0 - - -21 - - - 2 - :). !!!!Effects: Equivalent to x << v.(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html#accessing_elements|get:)<0>() << ... << v.(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html#accessing_elements|get:)<N>(). !!!!Returns: x. (:include throws:) - - - - - 0 - - -30 + -31 @@ -5554,7 +5567,7 @@ 0 - -30 + -31 2 @@ -5563,7 +5576,7 @@ 0 - -9 + -10 2 @@ -5572,7 +5585,7 @@ 0 - -9 + -10 2 @@ -5581,7 +5594,7 @@ 0 - -30 + -31 2 @@ -5590,7 +5603,7 @@ 0 - -30 + -31 2 @@ -5617,7 +5630,7 @@ 0 - -30 + -31 2 @@ -5626,7 +5639,7 @@ 0 - -9 + -10 2 @@ -5644,7 +5657,7 @@ 0 - -21 + -25 2 @@ -5653,7 +5666,7 @@ 0 - -21 + -25 2 @@ -5671,7 +5684,7 @@ 0 - -21 + -25 2 @@ -5682,7 +5695,7 @@ 0 - -31 + -32 @@ -5693,7 +5706,7 @@ 0 - -21 + -25 2 @@ -5702,7 +5715,7 @@ 0 - -15 + -11 2 @@ -5711,20 +5724,38 @@ 0 - -17 + -19 2 - mod="w":)" for details. !!!!Throws: Nothing. !!!!Notes: *The return value remains valid until the exception object from which it was obtained is destroyed or modified. *The header + mod="w":)" for details. !!!!Throws: Nothing. !!!!Notes: *The return value remains valid until the exception object from which it was obtained is destroyed or modified. *The header (:link 1 0 - -26 + -28 2 - provides a namespace-scope function + :) provides a namespace-scope function (:link + 1 + + 0 + + -33 + + + 2 + :) which works with any exception. If its argument can be converted to boost::(:link + 1 + + 0 + + -25 + + + 2 + :), the output from (:link 1 0 @@ -5733,56 +5764,7 @@ 2 - which takes a std::exception. It calls - 1 - - 0 - - -31 - - - 2 - if its argument can be converted to boost:: - 1 - - 0 - - -21 - - - 2 - ; otherwise it returns a string that combines the value of std::exception::what and the exception's dynamic type. - - - - - 0 - - -32 - - - - 5 - 2 - (:auto !!!:) (:include synopsis:) !!!!Returns: Platform-specific diagnostic information about x. !!!!Note: If dynamic_cast<boost::(:link - 1 - - 0 - - -21 - - - 2 - :) const *>(&x) is not null, the returned string includes the output from (:link - 1 - - 0 - - -31 - - - 2 - :). + :) is combined with other implementation-defined information into a std::string. @@ -5793,18 +5775,27 @@ - 3 + 5 2 - (:auto !!!:) (:include decl:) !!!!Effects: Frees all resources associated with a boost::(:link + (:auto !!!:) (:include synopsis:) !!!!Returns: Platform-specific diagnostic information about x. !!!!Notes: *If dynamic_cast<std::exception const *>(&x) is not null, the returned string includes the output from std::exception::what. *If dynamic_cast<boost::(:link 1 0 - -21 + -25 2 - :) object. !!!!Throws: Nothing. + :) const *>(&x) is not null, the returned string includes the output from boost::(:link + 1 + + 0 + + -32 + + + 2 + :). @@ -5815,81 +5806,18 @@ - 17 + 3 2 - (:auto !!!:) The following example demonstrates how errno can be stored in exception objects using Boost Exception: [@#include <(:link + (:auto !!!:) (:include decl:) !!!!Effects: Frees all resources associated with a boost::(:link 1 0 - -18 + -25 2 - :)> #include <errno.h> #include <iostream> typedef boost::(:link - 1 - - 0 - - -10 - - - 2 - :)<struct tag_errno,int> errno_info; //(1) class my_error: public boost::(:link - 1 - - 0 - - -21 - - - 2 - :), public std::exception { }; //(2) void f() { throw my_error() << errno_info(errno); //(3) } @] First, we instantiate the (:link - 1 - - 0 - - -10 - - - 2 - :) template using a unique identifier -- tag_errno, and the type of the info it identifies -- int. This provides compile-time type safety for the various values stored in exception objects. Second, we define class my_error, which derives from boost::(:link - 1 - - 0 - - -21 - - - 2 - :). Finally, (3) illustrates how the typedef from (1) can be used with (:link - 1 - - 0 - - -15 - - - 2 - |operator<<:) to store values in exception objects at the point of the throw. The stored errno value can be recovered at a later time like this: [@// ...continued void g() { try { f(); } catch( my_error & x ) { if( boost::shared_ptr<int const> err=boost::(:link - 1 - - 0 - - -6 - - - 2 - :)<errno_info>(x) ) std::cerr << "Error code: " << *err; } }@] The (:link - 1 - - 0 - - -6 - - - 2 - :) 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, the returned (:link http://www.boost.org/libs/smart_ptr/shared_ptr.htm|shared_ptr:) will point to it; otherwise an empty (:link http://www.boost.org/libs/smart_ptr/shared_ptr.htm|shared_ptr:) is returned. + :) object. !!!!Throws: Nothing. @@ -5900,36 +5828,9 @@ - 37 + 17 2 - (:auto !!!:) When you catch an exception, you can call (:link - 1 - - 0 - - -30 - - - 2 - :) to get an (:link - 1 - - 0 - - -9 - - - 2 - :) object: [@#include <(:link - 1 - - 0 - - -14 - - - 2 - :)> #include <boost/thread.hpp> #include <boost/bind.hpp> void do_work(); //throws cloning-enabled boost::(:link + (:auto !!!:) The following example demonstrates how errno can be stored in exception objects using Boost Exception: [@#include <(:link 1 0 @@ -5938,12 +5839,124 @@ 2 + :)> #include <errno.h> #include <iostream> typedef boost::(:link + 1 + + 0 + + -12 + + + 2 + :)<struct tag_errno,int> errno_info; //(1) class my_error: public boost::(:link + 1 + + 0 + + -25 + + + 2 + :), public std::exception { }; //(2) void f() { throw my_error() << errno_info(errno); //(3) } @] First, we instantiate the (:link + 1 + + 0 + + -12 + + + 2 + :) template using a unique identifier -- tag_errno, and the type of the info it identifies -- int. This provides compile-time type safety for the various values stored in exception objects. Second, we define class my_error, which derives from boost::(:link + 1 + + 0 + + -25 + + + 2 + :). Finally, (3) illustrates how the typedef from (1) can be used with (:link + 1 + + 0 + + -11 + + + 2 + |operator<<:) to store values in exception objects at the point of the throw. The stored errno value can be recovered at a later time like this: [@// ...continued void g() { try { f(); } catch( my_error & x ) { if( boost::shared_ptr<int const> err=boost::(:link + 1 + + 0 + + -5 + + + 2 + :)<errno_info>(x) ) std::cerr << "Error code: " << *err; } }@] The (:link + 1 + + 0 + + -5 + + + 2 + :) 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, the returned (:link http://www.boost.org/libs/smart_ptr/shared_ptr.htm|shared_ptr:) will point to it; otherwise an empty (:link http://www.boost.org/libs/smart_ptr/shared_ptr.htm|shared_ptr:) is returned. + + + + + 0 + + -36 + + + + 37 + 2 + (:auto !!!:) When you catch an exception, you can call (:link + 1 + + 0 + + -31 + + + 2 + :) to get an (:link + 1 + + 0 + + -10 + + + 2 + :) object: [@#include <(:link + 1 + + 0 + + -16 + + + 2 + :)> #include <boost/thread.hpp> #include <boost/bind.hpp> void do_work(); //throws cloning-enabled boost::(:link + 1 + + 0 + + -25 + + + 2 :)s void worker_thread( boost::(:link 1 0 - -9 + -10 2 @@ -5952,7 +5965,7 @@ 0 - -9 + -10 2 @@ -5961,7 +5974,7 @@ 0 - -30 + -31 2 @@ -5970,7 +5983,7 @@ 0 - -30 + -31 2 @@ -5979,7 +5992,7 @@ 0 - -5 + -7 2 @@ -5988,7 +6001,7 @@ 0 - -9 + -10 2 @@ -5997,7 +6010,7 @@ 0 - -5 + -7 2 @@ -6006,7 +6019,7 @@ 0 - -30 + -31 2 @@ -6015,7 +6028,7 @@ 0 - -9 + -10 2 @@ -6033,7 +6046,7 @@ 0 - -9 + -10 2 @@ -6051,7 +6064,7 @@ 0 - -30 + -31 2 @@ -6060,26 +6073,13 @@ 0 - -5 + -7 2 :) in the above examples is well-formed. - - - 0 - - -36 - - - - 1 - 2 - (:auto !!:) !!!Synopsis (:include synopsis:) - - 0 @@ -6095,7 +6095,7 @@ 0 - -9 + -10 2 @@ -6104,7 +6104,7 @@ 0 - -30 + -31 2 @@ -6126,7 +6126,7 @@ 0 - -9 + -10 2 @@ -6153,7 +6153,7 @@ 0 - -30 + -31 2 @@ -6162,7 +6162,7 @@ 0 - -9 + -10 2 @@ -6180,7 +6180,7 @@ 0 - -30 + -31 2 @@ -6198,7 +6198,7 @@ 0 - -21 + -25 2 @@ -6207,7 +6207,7 @@ 0 - -9 + -10 2 @@ -6240,7 +6240,7 @@ 0 - -21 + -25 2 @@ -6249,7 +6249,7 @@ 0 - -21 + -25 2 @@ -6289,7 +6289,7 @@ 0 - -21 + -25 2 @@ -6298,7 +6298,7 @@ 0 - -7 + -8 2 @@ -6307,7 +6307,7 @@ 0 - -35 + -36 2 @@ -6493,7 +6493,9 @@ - 0 + 1 + 2 + !!!!Throws: std::bad_alloc, or any exception emitted by the T copy constructor. @@ -6537,9 +6539,7 @@ - 1 - 2 - !!!!Throws: std::bad_alloc, or any exception emitted by the T copy constructor. + 0 @@ -6616,7 +6616,9 @@ - 0 + 1 + 2 + !!!!Throws: std::bad_alloc, or any exception emitted by T1..TN copy constructor. @@ -6693,9 +6695,7 @@ - 1 - 2 - !!!!Throws: std::bad_alloc, or any exception emitted by T1..TN copy constructor. + 0 @@ -6884,28 +6884,6 @@ -5 - - 3 - 2 - `#include <(:link - 1 - - 0 - - -14 - - - 2 - :)> [@namespace boost { (:include decl pre_indent="4":) }@] - - - - - 0 - - -6 - - 3 2 @@ -6921,6 +6899,28 @@ > [@namespace boost { (:include decl pre_indent="4":) }@] + + + 0 + + -6 + + + + 3 + 2 + `#include <(:link + 1 + + 0 + + -16 + + + 2 + :)> [@namespace boost { (:include decl pre_indent="4":) }@] + + 0 @@ -6929,7 +6929,18 @@ - 0 + 3 + 2 + `#include <(:link + 1 + + 0 + + -16 + + + 2 + :)> [@namespace boost { (:include decl pre_indent="4":) }@] @@ -6940,18 +6951,7 @@ - 3 - 2 - `#include <(:link - 1 - - 0 - - -14 - - - 2 - :)> [@namespace boost { (:include decl pre_indent="4":) }@] + 0 @@ -6962,18 +6962,9 @@ - 3 + 1 2 - `#include <(:link - 1 - - 0 - - -14 - - - 2 - :)> [@namespace boost { (:include decl pre_indent="4":) }@] + [@#include <boost/tuple/tuple.hpp> namespace boost { (:include api pre_indent="4":) }@] @@ -6991,11 +6982,11 @@ 0 - -28 + -16 2 - :)> [@namespace boost { (:include def pre_indent="4":) }@] + :)> [@namespace boost { (:include decl pre_indent="4":) }@] @@ -7005,6 +6996,50 @@ -11 + + 3 + 2 + `#include <(:link + 1 + + 0 + + -30 + + + 2 + :)>\\ [@namespace boost { (:include decl pre_indent="4":) }@] + + + + + 0 + + -12 + + + + 3 + 2 + `#include <(:link + 1 + + 0 + + -30 + + + 2 + :)> [@namespace boost { (:include def pre_indent="4":) }@] + + + + + 0 + + -13 + + 3 2 @@ -7013,7 +7048,7 @@ 0 - -19 + -23 2 @@ -7024,7 +7059,7 @@ 0 - -12 + -14 @@ -7033,39 +7068,6 @@ [@namespace boost { (:include api pre_indent="4":) }@] - - - 0 - - -13 - - - - 0 - - - - - 0 - - -14 - - - - 3 - 2 - [@#include <(:link - 1 - - 0 - - -19 - - - 2 - :)> namespace boost { (:include api pre_indent="4":) }@] - - 0 @@ -7074,18 +7076,7 @@ - 3 - 2 - `#include <(:link - 1 - - 0 - - -28 - - - 2 - :)>\\ [@namespace boost { (:include decl pre_indent="4":) }@] + 0 @@ -7103,7 +7094,7 @@ 0 - -19 + -23 2 @@ -7128,6 +7119,70 @@ -18 + + 3 + 2 + [@#include <(:link + 1 + + 0 + + -23 + + + 2 + :)> namespace boost { (:include api pre_indent="4":) }@] + + + + + 0 + + -19 + + + + 0 + + + + + 0 + + -20 + + + + 5 + 2 + [@#include <(:link + 1 + + 0 + + -13 + + + 2 + :)> #include <(:link + 1 + + 0 + + -18 + + + 2 + :)> #include <exception> namespace boost { (:include api pre_indent="4":) }@] + + + + + 0 + + -21 + + 1 2 @@ -7138,7 +7193,38 @@ 0 - -19 + -22 + + + + 5 + 2 + `#include <(:link + 1 + + 0 + + -9 + + + 2 + :)> [@namespace boost { (:include + 1 + + 0 + + -22 + + + 2 + decl pre_indent="4":) }@] + + + + + 0 + + -23 @@ -7147,72 +7233,6 @@ [@namespace boost { (:include api pre_indent="4":) }@] - - - 0 - - -20 - - - - 0 - - - - - 0 - - -21 - - - - 3 - 2 - `#include <(:link - 1 - - 0 - - -19 - - - 2 - :)> [@namespace boost { (:include def pre_indent="4":) }@] - - - - - 0 - - -22 - - - - 3 - 2 - `#include <(:link - 1 - - 0 - - -28 - - - 2 - :)> [@namespace boost { (:include decl pre_indent="4":) }@] - - - - - 0 - - -23 - - - - 0 - - 0 @@ -7221,9 +7241,7 @@ - 1 - 2 - [@#include <boost/tuple/tuple.hpp> namespace boost { (:include api pre_indent="4":) }@] + 0 @@ -7234,7 +7252,18 @@ - 0 + 3 + 2 + `#include <(:link + 1 + + 0 + + -23 + + + 2 + :)> [@namespace boost { (:include def pre_indent="4":) }@] @@ -7245,9 +7274,18 @@ - 1 + 3 2 - [@#include <exception> namespace boost { (:include api pre_indent="4":) }@] + `#include <(:link + 1 + + 0 + + -30 + + + 2 + :)> [@namespace boost { (:include decl pre_indent="4":) }@] @@ -7269,18 +7307,9 @@ - 3 + 1 2 - [@#include <(:link - 1 - - 0 - - -19 - - - 2 - :)> #include <boost/current_function.hpp> #include <boost/shared_ptr.hpp> namespace boost { (:include api pre_indent="4":) }@] + [@#include <exception> namespace boost { (:include api pre_indent="4":) }@] @@ -7291,27 +7320,7 @@ - 5 - 2 - `#include <(:link - 1 - - 0 - - -24 - - - 2 - :)> [@namespace boost { (:include - 1 - - 0 - - -29 - - - 2 - decl pre_indent="4":) }@] + 0 @@ -7324,16 +7333,16 @@ 3 2 - `#include <(:link + [@#include <(:link 1 0 - -14 + -23 2 - :)> [@namespace boost { (:include decl pre_indent="4":) }@] + :)> #include <boost/current_function.hpp> #include <boost/shared_ptr.hpp> namespace boost { (:include api pre_indent="4":) }@] @@ -7343,17 +7352,6 @@ -31 - - 0 - - - - - 0 - - -32 - - 3 2 @@ -7362,7 +7360,7 @@ 0 - -26 + -16 2 @@ -7373,13 +7371,35 @@ 0 - -33 + -32 0 + + + 0 + + -33 + + + + 3 + 2 + `#include <(:link + 1 + + 0 + + -28 + + + 2 + :)> [@namespace boost { (:include decl pre_indent="4":) }@] + + 0 @@ -7410,27 +7430,7 @@ - 5 - 2 - [@#include <(:link - 1 - - 0 - - -11 - - - 2 - :)> #include <(:link - 1 - - 0 - - -16 - - - 2 - :)> #include <exception> namespace boost { (:include api pre_indent="4":) }@] + 0 @@ -7448,7 +7448,7 @@ 0 - -14 + -16 2 @@ -7470,7 +7470,7 @@ 0 - -11 + -13 2 @@ -7503,7 +7503,7 @@ 0 - -16 + -18 2 @@ -7547,7 +7547,7 @@ 0 - -36 + -20 2 @@ -7758,7 +7758,7 @@ - -13 + -15 @@ -7799,7 +7799,7 @@ - -26 + -28 @@ -7823,7 +7823,7 @@ - -14 + -16 @@ -7847,7 +7847,7 @@ - -36 + -20 @@ -7871,7 +7871,7 @@ - -35 + -36 @@ -7899,7 +7899,7 @@ - -32 + -33 @@ -7923,7 +7923,7 @@ - -27 + -29 @@ -7947,7 +7947,7 @@ - -28 + -30 @@ -7971,7 +7971,7 @@ - -7 + -8 @@ -7999,7 +7999,7 @@ - -6 + -5 @@ -8027,7 +8027,7 @@ - -21 + -25 @@ -8063,7 +8063,7 @@ - -33 + -34 @@ -8095,7 +8095,7 @@ - -31 + -32 @@ -8127,7 +8127,7 @@ - -25 + -27 @@ -8151,7 +8151,7 @@ - -22 + -26 @@ -8175,7 +8175,7 @@ - -16 + -18 @@ -8199,7 +8199,7 @@ - -19 + -23 @@ -8223,7 +8223,7 @@ - -18 + -21 @@ -8251,7 +8251,7 @@ - -8 + -6 @@ -8307,7 +8307,7 @@ - -30 + -31 @@ -8335,7 +8335,7 @@ - -9 + -10 @@ -8363,7 +8363,7 @@ - -5 + -7 @@ -8415,7 +8415,7 @@ - -12 + -14 @@ -8495,7 +8495,7 @@ - -24 + -9 @@ -8519,7 +8519,7 @@ - -11 + -13 @@ -8547,7 +8547,7 @@ - -15 + -11 @@ -8575,7 +8575,7 @@ - -10 + -12 @@ -8599,7 +8599,7 @@ - -20 + -24 @@ -8623,7 +8623,7 @@ - -17 + -19 @@ -8675,7 +8675,7 @@ - -29 + -22 @@ -8699,7 +8699,7 @@ - -34 + -35 @@ -8723,7 +8723,7 @@ - -23 + -17 @@ -8754,7 +8754,7 @@ -5 - exception_ptr free function + error_info free function @@ -8763,7 +8763,7 @@ -6 - error_info free function + exception_ptr free function @@ -8772,7 +8772,7 @@ -7 - noalso noindex tutorial + exception_ptr free function @@ -8781,7 +8781,7 @@ -8 - exception_ptr free function + noalso noindex tutorial @@ -8790,7 +8790,7 @@ -9 - type + @@ -8808,7 +8808,7 @@ -11 - + error_info free function @@ -8817,7 +8817,7 @@ -12 - + type @@ -8826,7 +8826,7 @@ -13 - tutorial + @@ -8844,7 +8844,7 @@ -15 - error_info free function + tutorial @@ -8853,7 +8853,7 @@ -16 - error_info + @@ -8862,7 +8862,7 @@ -17 - diagnostic_information tutorial + noalso noindex tutorial @@ -8871,7 +8871,7 @@ -18 - + error_info @@ -8880,7 +8880,7 @@ -19 - + diagnostic_information tutorial @@ -8889,7 +8889,7 @@ -20 - noalso noindex tutorial + @@ -8898,7 +8898,7 @@ -21 - type + @@ -8907,7 +8907,7 @@ -22 - + error_info free function @@ -8916,7 +8916,7 @@ -23 - noalso noindex tutorial + @@ -8925,7 +8925,7 @@ -24 - + noalso noindex tutorial @@ -8934,7 +8934,7 @@ -25 - function + type @@ -8952,7 +8952,7 @@ -27 - tutorial + function @@ -8970,7 +8970,7 @@ -29 - error_info free function + tutorial @@ -8979,7 +8979,7 @@ -30 - exception_ptr free function + @@ -8988,7 +8988,7 @@ -31 - function + exception_ptr free function @@ -8997,7 +8997,7 @@ -32 - diagnostic_information free function + function @@ -9006,7 +9006,7 @@ -33 - function + diagnostic_information free function @@ -9015,7 +9015,7 @@ -34 - noalso noindex tutorial + function @@ -9033,7 +9033,7 @@ -36 - + noalso noindex tutorial