diff --git a/doc/source/boost-exception.reno b/doc/source/boost-exception.reno index cff76af..d12b3f2 100644 --- a/doc/source/boost-exception.reno +++ b/doc/source/boost-exception.reno @@ -173,6 +173,51 @@ reno_context + + + + + + 1 + 66EFC83C830F0B00D0C9399B475099072E2674B3C694F9152645A33E3D7AC303 + 561674611 + 417 + 323 + + + + + + 0 + ../../../../boost/exception/errinfo_file_name.hpp + 0 + 0 + + + + + <string>boost/exception/errinfo_file_name.hpp</string> + + + + + + + + + 1 + 2 + (:include include:) (:auto also:) + + + + + 0 + + 9 + + reno_context + @@ -218,7 +263,7 @@ 0 - 9 + 10 reno_context @@ -263,7 +308,45 @@ 0 - 10 + 11 + + reno_context + + + + + + + 0 + + + + + + 1 + + + + + <string>using virtual inheritance in exception types</string> + + + + + + + + + 1 + 2 + (:include include:) (:auto also:) + + + + + 0 + + 12 reno_context @@ -312,7 +395,7 @@ 0 - 11 + 13 reno_context @@ -357,7 +440,7 @@ 0 - 12 + 14 reno_context @@ -402,7 +485,7 @@ 0 - 13 + 15 reno_context @@ -447,7 +530,7 @@ 0 - 14 + 16 reno_context @@ -490,7 +573,7 @@ 0 - 15 + 17 reno_context @@ -499,18 +582,29 @@ - 0 + 2 + 307034E20863A00923777A60D9495B4076B7F917D5B97203025299060F0833E0 + 3948311309 + 396 + 344 + F8ED2052577830AC0C515EC5932BB14445DD5DA714782281FCDB1776961FECB1 + 3880328768 + 82 + 308 - 1 + 0 + ../../../../boost/exception/errinfo_file_name.hpp + 0 + 0 - <string>using virtual inheritance in exception types</string> + <string>errinfo_file_name</string> @@ -528,7 +622,7 @@ 0 - 16 + 18 reno_context @@ -566,7 +660,7 @@ 0 - 17 + 19 reno_context @@ -611,7 +705,7 @@ 0 - 18 + 20 reno_context @@ -656,7 +750,7 @@ 0 - 19 + 21 reno_context @@ -665,25 +759,29 @@ - 1 - 66EFC83C830F0B00D0C9399B475099072E2674B3C694F9152645A33E3D7AC303 - 561674611 - 417 - 323 + 2 + AED5E79246B32BDF0E5C6CD8BDDC3370FD0BA1EFE3D4CE76C4A6D36A123F2E20 + 228982966 + 3918 + 518 + 6E325144EF4F41FA3A225EB30729101382C4E99B3D6160E307311E4B4E641010 + 1097215175 + 161 + 240 0 - ../../../../boost/exception/errinfo_file_name.hpp + ../../../../boost/exception/info.hpp 0 0 - <string>boost/exception/errinfo_file_name.hpp</string> + <string>error_info::error_info</string> @@ -701,7 +799,7 @@ 0 - 20 + 22 reno_context @@ -750,7 +848,7 @@ 0 - 21 + 23 reno_context @@ -803,7 +901,7 @@ 0 - 22 + 24 reno_context @@ -852,7 +950,7 @@ 0 - 23 + 25 reno_context @@ -897,7 +995,7 @@ 0 - 24 + 26 reno_context @@ -942,7 +1040,7 @@ 0 - 25 + 27 reno_context @@ -987,7 +1085,7 @@ 0 - 26 + 28 reno_context @@ -996,47 +1094,41 @@ - 2 - AED5E79246B32BDF0E5C6CD8BDDC3370FD0BA1EFE3D4CE76C4A6D36A123F2E20 - 228982966 - 3918 - 518 - 6E325144EF4F41FA3A225EB30729101382C4E99B3D6160E307311E4B4E641010 - 1097215175 - 161 - 240 + 1 + FB3526A6A3A99CF87E766D0B34CEC3F8FB49228B2BFC54C3D56098778710397F + 3851746268 + 852 + 306 0 - ../../../../boost/exception/info.hpp + ../../example/error_info_2.cpp 0 0 - <string>error_info::error_info</string> + <string>adding of arbitrary data to active exception objects</string> - + adding_data_later - 1 - 2 - (:include include:) (:auto also:) + 0 0 - 27 + 29 reno_context @@ -1081,7 +1173,7 @@ 0 - 28 + 30 reno_context @@ -1119,7 +1211,7 @@ 0 - 29 + 31 reno_context @@ -1129,9 +1221,9 @@ 1 - 025A8CE0643CFC0EB812BD3EB89F8F410D91EC3467CC6F371E7215F25F590B27 - 2422739525 - 6071 + 6189E343CCDAD18E707853FD4F4B1F4B15E650B8E0C73F2DAE25C866E4867828 + 532819485 + 6137 412 @@ -1162,56 +1254,7 @@ 0 - 30 - - reno_context - - - - - - - 2 - 307034E20863A00923777A60D9495B4076B7F917D5B97203025299060F0833E0 - 3948311309 - 396 - 344 - F8ED2052577830AC0C515EC5932BB14445DD5DA714782281FCDB1776961FECB1 - 3880328768 - 82 - 308 - - - - - - 0 - ../../../../boost/exception/errinfo_file_name.hpp - 0 - 0 - - - - - <string>errinfo_file_name</string> - - - - - - - - - 1 - 2 - (:include include:) (:auto also:) - - - - - 0 - - 31 + 32 reno_context @@ -1249,7 +1292,7 @@ 0 - 32 + 33 reno_context @@ -1287,7 +1330,7 @@ 0 - 33 + 34 reno_context @@ -1336,7 +1379,7 @@ 0 - 34 + 35 reno_context @@ -1385,7 +1428,7 @@ 0 - 35 + 36 reno_context @@ -1434,7 +1477,7 @@ 0 - 36 + 37 reno_context @@ -1472,7 +1515,7 @@ 0 - 37 + 38 reno_context @@ -1521,7 +1564,7 @@ 0 - 38 + 39 reno_context @@ -1559,7 +1602,7 @@ 0 - 39 + 40 reno_context @@ -1600,49 +1643,6 @@ (:include include:) (:auto also:) - - - 0 - - 40 - - reno_context - - - - - - - 1 - FB3526A6A3A99CF87E766D0B34CEC3F8FB49228B2BFC54C3D56098778710397F - 3851746268 - 852 - 306 - - - - - - 0 - ../../example/error_info_2.cpp - 0 - 0 - - - - - <string>adding of arbitrary data to active exception objects</string> - - - adding_data_later - - - - - - 0 - - 0 @@ -1787,6 +1787,51 @@ reno_context + + + + + + 1 + C95CEF2E9D0BAA1E950509471062916DB849A46A19F7692BA478030E79B338EB + 1917376632 + 706 + 408 + + + + + + 0 + ../../example/enable_error_info.cpp + 0 + 0 + + + + + <string>integrating boost exception in existing exception class hierarchies</string> + + + tutorial_enable_error_info + + + + + + 1 + 2 + (:include include:) (:auto also:) + + + + + 0 + + 45 + + reno_context + @@ -1826,7 +1871,7 @@ 0 - 45 + 46 reno_context @@ -1875,7 +1920,7 @@ 0 - 46 + 47 reno_context @@ -1920,7 +1965,7 @@ 0 - 47 + 48 reno_context @@ -1969,7 +2014,7 @@ 0 - 48 + 49 reno_context @@ -2022,7 +2067,7 @@ 0 - 49 + 50 reno_context @@ -2071,7 +2116,7 @@ 0 - 50 + 51 reno_context @@ -2120,7 +2165,56 @@ 0 - 51 + 52 + + reno_context + + + + + + + 2 + EEA69AA1E84CB2B7C903A3F4C236D0A233D03DBA4BA1D3B97D959918F3B30E09 + 2728032055 + 406 + 344 + EE695B95A2499B66980754857E184776F1DE7224372A5F5153B6DF94E621A89B + 1009590890 + 92 + 308 + + + + + + 0 + ../../../../boost/exception/errinfo_file_open_mode.hpp + 0 + 0 + + + + + <string>errinfo_file_open_mode</string> + + + + + + + + + 1 + 2 + (:include include:) (:auto also:) + + + + + 0 + + 53 reno_context @@ -2169,7 +2263,7 @@ 0 - 52 + 54 reno_context @@ -2214,7 +2308,7 @@ 0 - 53 + 55 reno_context @@ -2252,7 +2346,7 @@ 0 - 54 + 56 reno_context @@ -2290,7 +2384,7 @@ 0 - 55 + 57 reno_context @@ -2333,52 +2427,7 @@ 0 - 56 - - reno_context - - - - - - - 1 - C95CEF2E9D0BAA1E950509471062916DB849A46A19F7692BA478030E79B338EB - 1917376632 - 706 - 408 - - - - - - 0 - ../../example/enable_error_info.cpp - 0 - 0 - - - - - <string>integrating boost exception in existing exception class hierarchies</string> - - - tutorial_enable_error_info - - - - - - 1 - 2 - (:include include:) (:auto also:) - - - - - 0 - - 57 + 58 reno_context @@ -2427,7 +2476,7 @@ 0 - 58 + 59 reno_context @@ -2463,7 +2512,7 @@ 0 - 59 + 60 reno_context @@ -2497,7 +2546,7 @@ 0 - -56 + -44 2 @@ -2506,7 +2555,7 @@ 0 - -36 + -37 2 @@ -2517,7 +2566,7 @@ 0 - -59 + -60 @@ -2530,7 +2579,7 @@ 0 - 60 + 61 reno_context @@ -2579,7 +2628,7 @@ 0 - 61 + 62 reno_context @@ -2632,7 +2681,7 @@ 0 - 62 + 63 reno_context @@ -2681,7 +2730,7 @@ 0 - 63 + 64 reno_context @@ -2730,7 +2779,7 @@ 0 - 64 + 65 reno_context @@ -2779,7 +2828,7 @@ 0 - 65 + 66 reno_context @@ -2824,7 +2873,7 @@ 0 - 66 + 67 reno_context @@ -2862,7 +2911,7 @@ 0 - 67 + 68 reno_context @@ -2915,7 +2964,7 @@ 0 - 68 + 69 reno_context @@ -2964,7 +3013,7 @@ 0 - 69 + 70 reno_context @@ -3009,7 +3058,7 @@ 0 - 70 + 71 reno_context @@ -3058,7 +3107,7 @@ 0 - 71 + 72 reno_context @@ -3107,7 +3156,7 @@ 0 - 72 + 73 reno_context @@ -3146,55 +3195,6 @@ 0 - - - 0 - - 73 - - reno_context - - - - - - - 2 - EEA69AA1E84CB2B7C903A3F4C236D0A233D03DBA4BA1D3B97D959918F3B30E09 - 2728032055 - 406 - 344 - EE695B95A2499B66980754857E184776F1DE7224372A5F5153B6DF94E621A89B - 1009590890 - 92 - 308 - - - - - - 0 - ../../../../boost/exception/errinfo_file_open_mode.hpp - 0 - 0 - - - - - <string>errinfo_file_open_mode</string> - - - - - - - - - 1 - 2 - (:include include:) (:auto also:) - - 0 @@ -3385,45 +3385,7 @@ - 9 - 2 - [@template <class Tag,class T> class (:link - 1 - - 0 - - -8 - - - 2 - :) { public: (:include - 1 - - 0 - - -21 - - - 2 - decl pre_indent="4":) (:include - 1 - - 0 - - -26 - - - 2 - decl pre_indent="4":) (:include - 1 - - 0 - - -67 - - - 2 - decl pre_indent="4":) };@] + 0 @@ -3434,7 +3396,45 @@ - 0 + 9 + 2 + [@template <class Tag,class T> class (:link + 1 + + 0 + + -9 + + + 2 + :) { public: (:include + 1 + + 0 + + -23 + + + 2 + decl pre_indent="4":) (:include + 1 + + 0 + + -21 + + + 2 + decl pre_indent="4":) (:include + 1 + + 0 + + -68 + + + 2 + decl pre_indent="4":) };@] @@ -3522,7 +3522,27 @@ - 0 + 5 + 2 + [@typedef + 1 + + 0 + + -9 + + + 2 + <struct errinfo_file_name_,std::string> + 1 + + 0 + + -17 + + + 2 + ;@] @@ -3665,27 +3685,7 @@ - 5 - 2 - [@typedef - 1 - - 0 - - -8 - - - 2 - <struct errinfo_file_name_,std::string> - 1 - - 0 - - -30 - - - 2 - ;@] + 0 @@ -3718,27 +3718,7 @@ - 5 - 2 - [@typedef - 1 - - 0 - - -8 - - - 2 - <struct errinfo_file_handle_,weak_ptr<FILE> > - 1 - - 0 - - -33 - - - 2 - ;@] + 0 @@ -3749,7 +3729,27 @@ - 0 + 5 + 2 + [@typedef + 1 + + 0 + + -9 + + + 2 + <struct errinfo_file_handle_,weak_ptr<FILE> > + 1 + + 0 + + -34 + + + 2 + ;@] @@ -3782,36 +3782,7 @@ - 7 - 2 - [@class (:link - 1 - - 0 - - -37 - - - 2 - :) { protected: (:include - 1 - - 0 - - -48 - - - 2 - decl pre_indent="4":) (:include - 1 - - 0 - - -63 - - - 2 - decl pre_indent="4":) };@] + 0 @@ -3822,7 +3793,36 @@ - 0 + 7 + 2 + [@class (:link + 1 + + 0 + + -38 + + + 2 + :) { protected: (:include + 1 + + 0 + + -49 + + + 2 + decl pre_indent="4":) (:include + 1 + + 0 + + -64 + + + 2 + decl pre_indent="4":) };@] @@ -3862,7 +3862,7 @@ 0 - -8 + -9 2 @@ -3919,27 +3919,7 @@ - 5 - 2 - [@typedef - 1 - - 0 - - -8 - - - 2 - <struct errinfo_api_function_,int> - 1 - - 0 - - -45 - - - 2 - ;@] + 0 @@ -3950,7 +3930,27 @@ - 0 + 5 + 2 + [@typedef + 1 + + 0 + + -9 + + + 2 + <struct errinfo_api_function_,int> + 1 + + 0 + + -46 + + + 2 + ;@] @@ -3994,27 +3994,7 @@ - 5 - 2 - [@typedef - 1 - - 0 - - -8 - - - 2 - <struct errinfo_type_info_name_,std::string> - 1 - - 0 - - -50 - - - 2 - ;@] + 0 @@ -4032,11 +4012,11 @@ 0 - -8 + -9 2 - <struct errinfo_errno_,int> + <struct errinfo_type_info_name_,std::string> 1 0 @@ -4056,7 +4036,27 @@ - 0 + 5 + 2 + [@typedef + 1 + + 0 + + -9 + + + 2 + <struct errinfo_file_open_mode_,std::string> + 1 + + 0 + + -52 + + + 2 + ;@] @@ -4067,7 +4067,27 @@ - 0 + 5 + 2 + [@typedef + 1 + + 0 + + -9 + + + 2 + <struct errinfo_errno_,int> + 1 + + 0 + + -53 + + + 2 + ;@] @@ -4287,27 +4307,7 @@ - 5 - 2 - [@typedef - 1 - - 0 - - -8 - - - 2 - <struct errinfo_file_open_mode_,std::string> - 1 - - 0 - - -73 - - - 2 - ;@] + 0 @@ -4383,7 +4383,7 @@ 0 - -64 + -65 2 @@ -4408,17 +4408,6 @@ -8 - - 0 - - - - - 0 - - -9 - - 3 2 @@ -4427,7 +4416,7 @@ 0 - -45 + -17 2 @@ -4438,7 +4427,7 @@ 0 - -10 + -9 @@ -4449,7 +4438,7 @@ 0 - -11 + -10 @@ -4460,11 +4449,22 @@ 0 - -57 + -46 2 - decl:)@] + def:)@] + + + + + 0 + + -11 + + + + 0 @@ -4493,7 +4493,7 @@ 0 - -43 + -58 2 @@ -4519,7 +4519,18 @@ - 0 + 3 + 2 + [@(:include + 1 + + 0 + + -43 + + + 2 + decl:)@] @@ -4552,27 +4563,7 @@ - 5 - 2 - [@(:include - 1 - - 0 - - -65 - - - 2 - decl:) namespace boost { (:include - 1 - - 0 - - -70 - - - 2 - decl:) }@] + 0 @@ -4583,18 +4574,7 @@ - 3 - 2 - [@(:include - 1 - - 0 - - -30 - - - 2 - def:)@] + 0 @@ -4605,7 +4585,27 @@ - 0 + 5 + 2 + [@(:include + 1 + + 0 + + -66 + + + 2 + decl:) namespace boost { (:include + 1 + + 0 + + -71 + + + 2 + decl:) }@] @@ -4637,6 +4637,28 @@ -23 + + 0 + + + + + 0 + + -24 + + + + 0 + + + + + 0 + + -25 + + 3 2 @@ -4652,95 +4674,6 @@ def:)@] - - - 0 - - -24 - - - - 3 - 2 - [@(:include - 1 - - 0 - - -50 - - - 2 - def:)@] - - - - - 0 - - -25 - - - - 13 - 2 - [@(:include - 1 - - 0 - - -68 - - - 2 - decl:) (:include - 1 - - 0 - - -47 - - - 2 - decl:) (:include - 1 - - 0 - - -71 - - - 2 - decl:) (:include - 1 - - 0 - - -20 - - - 2 - decl:) (:include - 1 - - 0 - - -7 - - - 2 - decl:) (:include - 1 - - 0 - - -49 - - - 2 - decl:)@] - - 0 @@ -4748,17 +4681,6 @@ -26 - - 0 - - - - - 0 - - -27 - - 3 2 @@ -4774,6 +4696,73 @@ def:)@] + + + 0 + + -27 + + + + 13 + 2 + [@(:include + 1 + + 0 + + -69 + + + 2 + decl:) (:include + 1 + + 0 + + -48 + + + 2 + decl:) (:include + 1 + + 0 + + -72 + + + 2 + decl:) (:include + 1 + + 0 + + -22 + + + 2 + decl:) (:include + 1 + + 0 + + -7 + + + 2 + decl:) (:include + 1 + + 0 + + -50 + + + 2 + decl:)@] + + 0 @@ -4793,7 +4782,18 @@ - 0 + 3 + 2 + [@(:include + 1 + + 0 + + -53 + + + 2 + def:)@] @@ -4892,18 +4892,7 @@ - 3 - 2 - [@(:include - 1 - - 0 - - -62 - - - 2 - decl:)@] + 0 @@ -4914,23 +4903,14 @@ - 5 + 3 2 [@(:include 1 0 - -8 - - - 2 - def:) (:include - 1 - - 0 - - -34 + -63 2 @@ -4945,7 +4925,27 @@ - 0 + 5 + 2 + [@(:include + 1 + + 0 + + -9 + + + 2 + def:) (:include + 1 + + 0 + + -35 + + + 2 + decl:)@] @@ -5011,27 +5011,7 @@ - 5 - 2 - [@(:include - 1 - - 0 - - -10 - - - 2 - decl:) (:include - 1 - - 0 - - -22 - - - 2 - decl:)@] + 0 @@ -5042,7 +5022,27 @@ - 0 + 5 + 2 + [@(:include + 1 + + 0 + + -12 + + + 2 + decl:) (:include + 1 + + 0 + + -24 + + + 2 + decl:)@] @@ -5097,54 +5097,7 @@ - 11 - 2 - [@(:include - 1 - - 0 - - -37 - - - 2 - def:) (:include - 1 - - 0 - - -8 - - - 2 - decl:) typedef (:link - 1 - - 0 - - -8 - - - 2 - :)<struct tag_throw_function,char const *> throw_function; typedef (:link - 1 - - 0 - - -8 - - - 2 - :)<struct tag_throw_file,char const *> throw_file; typedef (:link - 1 - - 0 - - -8 - - - 2 - :)<struct tag_throw_line,int> throw_line;@] + 0 @@ -5166,7 +5119,54 @@ - 0 + 11 + 2 + [@(:include + 1 + + 0 + + -38 + + + 2 + def:) (:include + 1 + + 0 + + -9 + + + 2 + decl:) typedef (:link + 1 + + 0 + + -9 + + + 2 + :)<struct tag_throw_function,char const *> throw_function; typedef (:link + 1 + + 0 + + -9 + + + 2 + :)<struct tag_throw_file,char const *> throw_file; typedef (:link + 1 + + 0 + + -9 + + + 2 + :)<struct tag_throw_line,int> throw_line;@] @@ -5232,18 +5232,7 @@ - 3 - 2 - [@(:include - 1 - - 0 - - -8 - - - 2 - decl:)@] + 0 @@ -5254,7 +5243,18 @@ - 0 + 3 + 2 + [@(:include + 1 + + 0 + + -9 + + + 2 + decl:)@] @@ -5342,18 +5342,7 @@ - 3 - 2 - [@(:include - 1 - - 0 - - -35 - - - 2 - decl:)@] + 0 @@ -5364,7 +5353,18 @@ - 0 + 3 + 2 + [@(:include + 1 + + 0 + + -36 + + + 2 + decl:)@] @@ -5415,7 +5415,7 @@ 0 - -73 + -52 2 @@ -5437,7 +5437,7 @@ 0 - -46 + -47 2 @@ -5446,7 +5446,7 @@ 0 - -60 + -61 2 @@ -5455,7 +5455,7 @@ 0 - -52 + -54 2 @@ -5464,7 +5464,7 @@ 0 - -69 + -70 2 @@ -5473,7 +5473,7 @@ 0 - -39 + -40 2 @@ -5482,34 +5482,7 @@ 0 - -11 - - - 2 - :)> #include <(:link - 1 - - 0 - - -25 - - - 2 - :)> #include <(:link - 1 - - 0 - - -9 - - - 2 - :)> #include <(:link - 1 - - 0 - - -23 + -13 2 @@ -5524,6 +5497,33 @@ 2 :)> #include <(:link 1 + + 0 + + -10 + + + 2 + :)> #include <(:link + 1 + + 0 + + -25 + + + 2 + :)> #include <(:link + 1 + + 0 + + -29 + + + 2 + :)> #include <(:link + 1 0 @@ -5536,7 +5536,7 @@ 0 - -19 + -8 2 @@ -5554,7 +5554,7 @@ 0 - -24 + -26 2 @@ -5576,7 +5576,7 @@ 0 - -33 + -34 2 @@ -5634,7 +5634,7 @@ 0 - -71 + -72 2 @@ -5658,18 +5658,7 @@ - 3 - 2 - [@template <class Tag,class T> class (:link - 1 - - 0 - - -8 - - - 2 - :);@] + 0 @@ -5680,7 +5669,18 @@ - 0 + 3 + 2 + [@template <class Tag,class T> class (:link + 1 + + 0 + + -9 + + + 2 + :);@] @@ -5691,36 +5691,7 @@ - 7 - 2 - [@template <class E> std::string (:link - 1 - - 0 - - -10 - - - 2 - :)( E const & e ); std::string (:link - 1 - - 0 - - -10 - - - 2 - :)( - 1 - - 0 - - -71 - - - 2 - const & p );@] + 0 @@ -5742,7 +5713,36 @@ - 0 + 7 + 2 + [@template <class E> std::string (:link + 1 + + 0 + + -12 + + + 2 + :)( E const & e ); std::string (:link + 1 + + 0 + + -12 + + + 2 + :)( + 1 + + 0 + + -72 + + + 2 + const & p );@] @@ -5830,27 +5830,7 @@ - 5 - 2 - [@template <class T> (:link - 1 - - 0 - - -71 - - - 2 - :) (:link - 1 - - 0 - - -20 - - - 2 - :)( T const & e );@] + 0 @@ -5861,9 +5841,9 @@ - 3 + 5 2 - [@typedef T (:link + [@(:link 1 0 @@ -5872,7 +5852,16 @@ 2 - mod="m":);@] + mod="m":)( (:link + 1 + + 0 + + -23 + + + 2 + mod="m":) const & v );@] @@ -5883,9 +5872,18 @@ - 3 + 5 2 - [@std::string (:link + [@template <class T> (:link + 1 + + 0 + + -72 + + + 2 + :) (:link 1 0 @@ -5894,7 +5892,7 @@ 2 - :)();@] + :)( T const & e );@] @@ -5905,7 +5903,18 @@ - 0 + 3 + 2 + [@typedef T (:link + 1 + + 0 + + -23 + + + 2 + mod="m":);@] @@ -5916,7 +5925,18 @@ - 0 + 3 + 2 + [@std::string (:link + 1 + + 0 + + -24 + + + 2 + :)();@] @@ -5938,27 +5958,7 @@ - 5 - 2 - [@(:link - 1 - - 0 - - -26 - - - 2 - mod="m":)( (:link - 1 - - 0 - - -21 - - - 2 - mod="m":) const & v );@] + 0 @@ -6046,27 +6046,7 @@ - 5 - 2 - [@template <class E, class Tag, class T> E const & (:link - 1 - - 0 - - -34 - - - 2 - mod="/":)( E const & x, (:link - 1 - - 0 - - -8 - - - 2 - :)<Tag,T> const & v );@] + 0 @@ -6079,16 +6059,7 @@ 5 2 - [@template <class ErrorInfo,class E> typename ErrorInfo::(:link - 1 - - 0 - - -21 - - - 2 - mod="m":) const * (:link + [@template <class E, class Tag, class T> E const & (:link 1 0 @@ -6097,7 +6068,16 @@ 2 - :)( E const & x );@] + mod="/":)( E const & x, (:link + 1 + + 0 + + -9 + + + 2 + :)<Tag,T> const & v );@] @@ -6108,7 +6088,27 @@ - 0 + 5 + 2 + [@template <class ErrorInfo,class E> typename ErrorInfo::(:link + 1 + + 0 + + -23 + + + 2 + mod="m":) const * (:link + 1 + + 0 + + -36 + + + 2 + :)( E const & x );@] @@ -6119,18 +6119,7 @@ - 3 - 2 - [@class (:link - 1 - - 0 - - -37 - - - 2 - :);@] + 0 @@ -6141,7 +6130,18 @@ - 0 + 3 + 2 + [@class (:link + 1 + + 0 + + -38 + + + 2 + :);@] @@ -6251,27 +6251,7 @@ - 5 - 2 - [@typedef (:link - 1 - - 0 - - -8 - - - 2 - :)<struct tag_original_exception_type,std::type_info const *> - 1 - - 0 - - -47 - - - 2 - ;@] + 0 @@ -6282,9 +6262,18 @@ - 7 + 5 2 - [@(:link + [@typedef (:link + 1 + + 0 + + -9 + + + 2 + :)<struct tag_original_exception_type,std::type_info const *> 1 0 @@ -6293,25 +6282,7 @@ 2 - mod="m":)(); (:link - 1 - - 0 - - -48 - - - 2 - mod="m":)( (:link - 1 - - 0 - - -37 - - - 2 - :) const & x );@] + ;@] @@ -6322,9 +6293,9 @@ - 5 + 7 2 - [@void (:link + [@(:link 1 0 @@ -6333,16 +6304,25 @@ 2 - :)( (:link + mod="m":)(); (:link 1 0 - -71 + -49 2 - :) const & ep ); + mod="m":)( (:link + 1 + + 0 + + -38 + + + 2 + :) const & x );@] @@ -6353,7 +6333,27 @@ - 0 + 5 + 2 + [@void (:link + 1 + + 0 + + -50 + + + 2 + :)( (:link + 1 + + 0 + + -72 + + + 2 + :) const & ep ); @@ -6430,36 +6430,7 @@ - 7 - 2 - [@template <class E, class Tag1, class T1, ..., class TagN, class TN> E const & (:link - 1 - - 0 - - -57 - - - 2 - mod="/":)( E const & x, (:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html|tuple:)< (:link - 1 - - 0 - - -8 - - - 2 - :)<Tag1,T1>, ..., (:link - 1 - - 0 - - -8 - - - 2 - :)<TagN,TN> > const & v );@] + 0 @@ -6470,7 +6441,36 @@ - 0 + 7 + 2 + [@template <class E, class Tag1, class T1, ..., class TagN, class TN> E const & (:link + 1 + + 0 + + -58 + + + 2 + mod="/":)( E const & x, (:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html|tuple:)< (:link + 1 + + 0 + + -9 + + + 2 + :)<Tag1,T1>, ..., (:link + 1 + + 0 + + -9 + + + 2 + :)<TagN,TN> > const & v );@] @@ -6514,18 +6514,7 @@ - 3 - 2 - [@template <class T> ---unspecified--- (:link - 1 - - 0 - - -62 - - - 2 - :)( T const & e );@] + 0 @@ -6538,7 +6527,7 @@ 3 2 - [@(:link + [@template <class T> ---unspecified--- (:link 1 0 @@ -6547,7 +6536,7 @@ 2 - mod="m":)();@] + :)( T const & e );@] @@ -6560,7 +6549,7 @@ 3 2 - [@template <class T> ---unspecified--- (:link + [@(:link 1 0 @@ -6569,7 +6558,7 @@ 2 - :)( T const & x );@] + mod="m":)();@] @@ -6580,18 +6569,9 @@ - 19 + 3 2 - [@#if !defined( BOOST_EXCEPTION_DISABLE ) #include <(:link - 1 - - 0 - - -52 - - - 2 - :)> #include <boost/current_function.hpp> #define (:link + [@template <class T> ---unspecified--- (:link 1 0 @@ -6600,70 +6580,7 @@ 2 - :)(x)\ ::boost::(:link - 1 - - 0 - - -70 - - - 2 - :)( ::boost::(:link - 1 - - 0 - - -64 - - - 2 - :)(x) <<\ ::boost::(:link - 1 - - 0 - - -52 - - - 2 - |throw_function:)(BOOST_CURRENT_FUNCTION) <<\ ::boost::(:link - 1 - - 0 - - -52 - - - 2 - |throw_file:)(__FILE__) <<\ ::boost::(:link - 1 - - 0 - - -52 - - - 2 - |throw_line:)((int)__LINE__) ) #else #define (:link - 1 - - 0 - - -65 - - - 2 - :)(x) ::boost::(:link - 1 - - 0 - - -70 - - - 2 - :)(x) #endif@] + :)( T const & x );@] @@ -6674,7 +6591,90 @@ - 0 + 19 + 2 + [@#if !defined( BOOST_EXCEPTION_DISABLE ) #include <(:link + 1 + + 0 + + -54 + + + 2 + :)> #include <boost/current_function.hpp> #define (:link + 1 + + 0 + + -66 + + + 2 + :)(x)\ ::boost::(:link + 1 + + 0 + + -71 + + + 2 + :)( ::boost::(:link + 1 + + 0 + + -65 + + + 2 + :)(x) <<\ ::boost::(:link + 1 + + 0 + + -54 + + + 2 + |throw_function:)(BOOST_CURRENT_FUNCTION) <<\ ::boost::(:link + 1 + + 0 + + -54 + + + 2 + |throw_file:)(__FILE__) <<\ ::boost::(:link + 1 + + 0 + + -54 + + + 2 + |throw_line:)((int)__LINE__) ) #else #define (:link + 1 + + 0 + + -66 + + + 2 + :)(x) ::boost::(:link + 1 + + 0 + + -71 + + + 2 + :)(x) #endif@] @@ -6685,27 +6685,7 @@ - 5 - 2 - [@(:link - 1 - - 0 - - -21 - - - 2 - mod="m":) const & (:link - 1 - - 0 - - -67 - - - 2 - mod="m":)() const;@] + 0 @@ -6718,7 +6698,16 @@ 5 2 - [@class (:link + [@(:link + 1 + + 0 + + -23 + + + 2 + mod="m":) const & (:link 1 0 @@ -6727,16 +6716,7 @@ 2 - :): public std::exception public boost:: - 1 - - 0 - - -37 - - - 2 - { ---unspecified--- };@] + mod="m":)() const;@] @@ -6747,7 +6727,27 @@ - 0 + 5 + 2 + [@class (:link + 1 + + 0 + + -69 + + + 2 + :): public std::exception public boost:: + 1 + + 0 + + -38 + + + 2 + { ---unspecified--- };@] @@ -6758,27 +6758,7 @@ - 5 - 2 - [@#ifdef BOOST_NO_EXCEPTIONS void (:link - 1 - - 0 - - -70 - - - 2 - :)( std::exception const & e ); // user defined #else template <class E> void (:link - 1 - - 0 - - -70 - - - 2 - :)( E const & e ); #endif@] + 0 @@ -6789,9 +6769,9 @@ - 3 + 5 2 - [@typedef ---unspecified--- (:link + [@#ifdef BOOST_NO_EXCEPTIONS void (:link 1 0 @@ -6800,7 +6780,16 @@ 2 - :);@] + :)( std::exception const & e ); // user defined #else template <class E> void (:link + 1 + + 0 + + -71 + + + 2 + :)( E const & e ); #endif@] @@ -6811,7 +6800,18 @@ - 0 + 3 + 2 + [@typedef ---unspecified--- (:link + 1 + + 0 + + -72 + + + 2 + :);@] @@ -6887,7 +6887,7 @@ 0 - -52 + -54 2 @@ -6896,7 +6896,7 @@ 0 - -52 + -54 2 @@ -6905,7 +6905,7 @@ 0 - -60 + -61 2 @@ -6914,7 +6914,7 @@ 0 - -60 + -61 2 @@ -6923,7 +6923,7 @@ 0 - -39 + -40 2 @@ -6932,61 +6932,7 @@ 0 - -39 - - - 2 - synopsis:)@] `#include <(:link - 1 - - 0 - - -11 - - - 2 - :)> [@(:include - 1 - - 0 - - -11 - - - 2 - synopsis:)@] `#include <(:link - 1 - - 0 - - -6 - - - 2 - :)> [@(:include - 1 - - 0 - - -6 - - - 2 - synopsis:)@] `#include <(:link - 1 - - 0 - - -46 - - - 2 - :)> [@(:include - 1 - - 0 - - -46 + -40 2 @@ -7013,7 +6959,7 @@ 0 - -25 + -6 2 @@ -7022,7 +6968,7 @@ 0 - -25 + -6 2 @@ -7031,7 +6977,7 @@ 0 - -38 + -47 2 @@ -7040,7 +6986,7 @@ 0 - -38 + -47 2 @@ -7049,7 +6995,7 @@ 0 - -18 + -15 2 @@ -7058,7 +7004,61 @@ 0 - -18 + -15 + + + 2 + synopsis:)@] `#include <(:link + 1 + + 0 + + -27 + + + 2 + :)> [@(:include + 1 + + 0 + + -27 + + + 2 + synopsis:)@] `#include <(:link + 1 + + 0 + + -39 + + + 2 + :)> [@(:include + 1 + + 0 + + -39 + + + 2 + synopsis:)@] `#include <(:link + 1 + + 0 + + -20 + + + 2 + :)> [@(:include + 1 + + 0 + + -20 2 @@ -7067,7 +7067,7 @@ 0 - -9 + -10 2 @@ -7076,7 +7076,7 @@ 0 - -9 + -10 2 @@ -7085,7 +7085,7 @@ 0 - -23 + -25 2 @@ -7094,7 +7094,7 @@ 0 - -23 + -25 2 @@ -7103,7 +7103,7 @@ 0 - -27 + -29 2 @@ -7112,7 +7112,7 @@ 0 - -27 + -29 2 @@ -7139,7 +7139,7 @@ 0 - -19 + -8 2 @@ -7148,7 +7148,7 @@ 0 - -19 + -8 2 @@ -7175,7 +7175,7 @@ 0 - -24 + -26 2 @@ -7184,7 +7184,7 @@ 0 - -24 + -26 2 @@ -7246,7 +7246,7 @@ 0 - -71 + -72 2 @@ -7255,7 +7255,7 @@ 0 - -71 + -72 2 @@ -7282,7 +7282,7 @@ 0 - -62 + -63 2 @@ -7300,7 +7300,7 @@ 0 - -71 + -72 2 @@ -7309,7 +7309,7 @@ 0 - -68 + -69 2 @@ -7318,7 +7318,7 @@ 0 - -37 + -38 2 @@ -7327,7 +7327,7 @@ 0 - -37 + -38 2 @@ -7336,7 +7336,7 @@ 0 - -37 + -38 2 @@ -7345,7 +7345,7 @@ 0 - -71 + -72 2 @@ -7354,7 +7354,7 @@ 0 - -37 + -38 2 @@ -7363,7 +7363,7 @@ 0 - -35 + -36 2 @@ -7372,7 +7372,7 @@ 0 - -47 + -48 2 @@ -7387,171 +7387,9 @@ - 37 + 1 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 - 1 - - 0 - - -8 - - - 2 - :)<Tag,T> can be passed to (:link - 1 - - 0 - - -34 - - - 2 - mod="/":) to be stored in objects of type boost::(:link - 1 - - 0 - - -37 - - - 2 - :). !!!!Usage: The header <(:link - 1 - - 0 - - -60 - - - 2 - :)> provides a declaration of the (:link - 1 - - 0 - - -8 - - - 2 - :) template, which is sufficient for the purpose of typedefing an instance for specific Tag and T, for example: [@#include <(:link - 1 - - 0 - - -60 - - - 2 - :)> struct tag_errno; typedef boost::(:link - 1 - - 0 - - -8 - - - 2 - :)<tag_errno,int> errno_info;@] Or, the shorter equivalent: [@#include <(:link - 1 - - 0 - - -60 - - - 2 - :)> typedef boost::(:link - 1 - - 0 - - -8 - - - 2 - :)<struct tag_errno,int> errno_info;@] This errno_info typedef can be passed to (:link - 1 - - 0 - - -34 - - - 2 - mod="/":) (#include <(:link - 1 - - 0 - - -39 - - - 2 - :)> first) to store an int named tag_errno in exceptions of types that derive from boost::(:link - 1 - - 0 - - -37 - - - 2 - :): [@throw file_read_error() (:link - 1 - - 0 - - -34 - - - 2 - |<<:) errno_info(errno);@] It can also be passed to (:link - 1 - - 0 - - -35 - - - 2 - :) (#include <(:link - 1 - - 0 - - -69 - - - 2 - :)> first) to retrieve the tag_errno int from a boost::(:link - 1 - - 0 - - -37 - - - 2 - :): [@catch( boost::(:link - 1 - - 0 - - -37 - - - 2 - :) & x ) { if( int const * e=boost::(:link - 1 - - 0 - - -35 - - - 2 - :)<errno_info>(x) ) .... }@] + (:auto !!:) !!!Synopsis (:include synopsis:) @@ -7562,9 +7400,171 @@ - 1 + 37 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 + + -9 + + + 2 + :)<Tag,T> can be passed to (:link + 1 + + 0 + + -35 + + + 2 + mod="/":) to be stored in objects of type boost::(:link + 1 + + 0 + + -38 + + + 2 + :). !!!!Usage: The header <(:link + 1 + + 0 + + -61 + + + 2 + :)> provides a declaration of the (:link + 1 + + 0 + + -9 + + + 2 + :) template, which is sufficient for the purpose of typedefing an instance for specific Tag and T, for example: [@#include <(:link + 1 + + 0 + + -61 + + + 2 + :)> struct tag_errno; typedef boost::(:link + 1 + + 0 + + -9 + + + 2 + :)<tag_errno,int> errno_info;@] Or, the shorter equivalent: [@#include <(:link + 1 + + 0 + + -61 + + + 2 + :)> typedef boost::(:link + 1 + + 0 + + -9 + + + 2 + :)<struct tag_errno,int> errno_info;@] This errno_info typedef can be passed to (:link + 1 + + 0 + + -35 + + + 2 + mod="/":) (#include <(:link + 1 + + 0 + + -40 + + + 2 + :)> first) to store an int named tag_errno in exceptions of types that derive from boost::(:link + 1 + + 0 + + -38 + + + 2 + :): [@throw file_read_error() (:link + 1 + + 0 + + -35 + + + 2 + |<<:) errno_info(errno);@] It can also be passed to (:link + 1 + + 0 + + -36 + + + 2 + :) (#include <(:link + 1 + + 0 + + -70 + + + 2 + :)> first) to retrieve the tag_errno int from a boost::(:link + 1 + + 0 + + -38 + + + 2 + :): [@catch( boost::(:link + 1 + + 0 + + -38 + + + 2 + :) & x ) { if( int const * e=boost::(:link + 1 + + 0 + + -36 + + + 2 + :)<errno_info>(x) ) .... }@] @@ -7575,171 +7575,9 @@ - 37 + 1 2 - (:auto !!!:) (:include synopsis:) !!!!Returns: A string value that contains varying amount of implementation-specific diagnostic information about the passed object: *If E can be statically converted to boost::(:link - 1 - - 0 - - -37 - - - 2 - :), the returned value contains the string representations of all (:link - 1 - - 0 - - -8 - - - 2 - :) objects stored in the boost::(:link - 1 - - 0 - - -37 - - - 2 - :) through (:link - 1 - - 0 - - -34 - - - 2 - mod="/":), along with other diagnostic information relevant to the exception. If e can be dynamically converted to std::exception, the returned value also contains the what() string. *Otherwise, if E can be statically converted std::exception: **if e can be dynamically converted to boost::exception, the returned value is the same as if E could be statically converted to boost::(:link - 1 - - 0 - - -37 - - - 2 - :); **otherwise the returned value contains the what() string. *Otherwise, the boost::(:link - 1 - - 0 - - -10 - - - 2 - :) template is not available. The string representation of each (:link - 1 - - 0 - - -8 - - - 2 - :) object is deduced by a function call that is bound at the time the (:link - 1 - - 0 - - -8 - - - 2 - :)<Tag,T> template is instantiated. The following overload resolutions are attempted in order: #Unqualified call to to_string(x), where x is of type (:link - 1 - - 0 - - -8 - - - 2 - :)<Tag,T> (the return value is expected to be of type std::string.) #Unqualified call to to_string(x.(:link - 1 - - 0 - - -67 - - - 2 - mod="m":)()) (the return value is expected to be of type std::string.) #Unqualified call to s << x.(:link - 1 - - 0 - - -67 - - - 2 - mod="m":)(), where s is a std::ostringstream. The first successfully bound function is used at the time (:link - 1 - - 0 - - -10 - - - 2 - :) is called; if all 3 overload resolutions are unsuccessful, the system is unable to convert the (:link - 1 - - 0 - - -8 - - - 2 - :) object to string, and ''an unspecified stub string value is used without issuing a compile error.'' The - 1 - - 0 - - -71 - - - 2 - overload of - 1 - - 0 - - -10 - - - 2 - is equivalent to: [@if( p ) try { - 1 - - 0 - - -49 - - - 2 - (p); } catch(...) { return - 1 - - 0 - - -22 - - - 2 - (); } else return <unspecified-string-value>;@] !!!!Notes: *The format of the returned string is unspecified. *The returned string is ''not'' user-friendly. *The returned string may include additional platform-specific diagnostic information. (:include - 1 - - 0 - - -29 - - - 2 - :) + (:auto !!:) !!!Synopsis (:include synopsis:) @@ -7750,9 +7588,27 @@ - 1 + 5 2 - (:auto !!:) !!!Synopsis (:include synopsis:) + (:auto !!!:) Exception types should use virtual inheritance when deriving from other exception types. This insight is due to Andrew Koenig. Using virtual inheritance prevents ambiguity problems in the exception handler: [@#include <iostream> struct my_exc1 : std::exception { char const* what() const throw(); }; struct my_exc2 : std::exception { char const* what() const throw(); }; struct your_exc3 : my_exc1, my_exc2 {}; int main() { try { throw your_exc3(); } catch(std::exception const& e) {} catch(...) { std::cout << "whoops!" << std::endl; } }@] The program above outputs "whoops!" because the conversion to std::exception is ambiguous. The overhead introduced by virtual inheritance is always negligible in the context of exception handling. Note that virtual bases are initialized directly by the constructor of the most-derived-type (the type passed to the throw statement, in case of exceptions.) However, typically this detail is of no concern when boost::(:link + 1 + + 0 + + -38 + + + 2 + :) is used, because it enables exception types to be trivial structs with no members (there's nothing to initialize.) See (:link + 1 + + 0 + + -60 + + + 2 + mod="w":). @@ -7763,32 +7619,32 @@ - 19 + 37 2 - (:auto !!:) Boost Exception provides a namespace-scope function (:link + (:auto !!!:) (:include synopsis:) !!!!Returns: A string value that contains varying amount of implementation-specific diagnostic information about the passed object: *If E can be statically converted to boost::(:link 1 0 - -10 + -38 2 - :) which takes a boost::(:link + :), the returned value contains the string representations of all (:link 1 0 - -37 + -9 2 - :). The returned string contains: *the string representation of all data objects added to the boost::(:link + :) objects stored in the boost::(:link 1 0 - -37 + -38 2 @@ -7797,52 +7653,133 @@ 0 - -34 + -35 2 - mod="/":); *the output from std::exception::what; *additional platform-specific diagnostic information. The returned string is not presentable as a friendly user message, but because it is generated automatically, it is useful for debugging or logging purposes. Here is an example: [@#include <(:link + mod="/":), along with other diagnostic information relevant to the exception. If e can be dynamically converted to std::exception, the returned value also contains the what() string. *Otherwise, if E can be statically converted std::exception: **if e can be dynamically converted to boost::exception, the returned value is the same as if E could be statically converted to boost::(:link 1 0 - -75 + -38 2 - :)> #include <iostream> void f(); //throws unknown types that derive from boost::(:link + :); **otherwise the returned value contains the what() string. *Otherwise, the boost::(:link 1 0 - -37 + -12 2 - :). void g() { try { f(); } catch( boost::(:link + :) template is not available. The string representation of each (:link 1 0 - -37 + -9 2 - :) & e ) { std::cerr << (:link + :) object is deduced by a function call that is bound at the time the (:link 1 0 - -10 + -9 2 - :)(e); } }@] (:include + :)<Tag,T> template is instantiated. The following overload resolutions are attempted in order: #Unqualified call to to_string(x), where x is of type (:link 1 0 - -29 + -9 + + + 2 + :)<Tag,T> (the return value is expected to be of type std::string.) #Unqualified call to to_string(x.(:link + 1 + + 0 + + -68 + + + 2 + mod="m":)()) (the return value is expected to be of type std::string.) #Unqualified call to s << x.(:link + 1 + + 0 + + -68 + + + 2 + mod="m":)(), where s is a std::ostringstream. The first successfully bound function is used at the time (:link + 1 + + 0 + + -12 + + + 2 + :) is called; if all 3 overload resolutions are unsuccessful, the system is unable to convert the (:link + 1 + + 0 + + -9 + + + 2 + :) object to string, and ''an unspecified stub string value is used without issuing a compile error.'' The + 1 + + 0 + + -72 + + + 2 + overload of + 1 + + 0 + + -12 + + + 2 + is equivalent to: [@if( p ) try { + 1 + + 0 + + -50 + + + 2 + (p); } catch(...) { return + 1 + + 0 + + -24 + + + 2 + (); } else return <unspecified-string-value>;@] !!!!Notes: *The format of the returned string is unspecified. *The returned string is ''not'' user-friendly. *The returned string may include additional platform-specific diagnostic information. (:include + 1 + + 0 + + -31 2 @@ -7870,72 +7807,90 @@ - 15 + 19 2 - (:auto !!!:) Here is how cloning can be enabled in a throw-expression (15.1): [@#include <(:link + (:auto !!:) Boost Exception provides a namespace-scope function (:link 1 0 - -39 + -12 2 - :)> #include <(:link + :) which takes a boost::(:link 1 0 - -27 + -38 2 - :)> #include <stdio.h> #include <errno.h> class file_read_error: public boost::(:link + :). The returned string contains: *the string representation of all data objects added to the boost::(:link 1 0 - -37 + -38 2 - :) { }; void file_read( FILE * f, void * buffer, size_t size ) { if( size!=fread(buffer,1,size,f) ) throw boost::(:link + :) through (:link 1 0 - -62 + -35 2 - :)(file_read_error()) << boost::(:link + mod="/":); *the output from std::exception::what; *additional platform-specific diagnostic information. The returned string is not presentable as a friendly user message, but because it is generated automatically, it is useful for debugging or logging purposes. Here is an example: [@#include <(:link 1 0 - -51 + -75 2 - :)(errno); }@] Of course, (:link + :)> #include <iostream> void f(); //throws unknown types that derive from boost::(:link 1 0 - -62 + -38 2 - :) may be used with any exception type; there is no requirement that it should derive from boost::(:link + :). void g() { try { f(); } catch( boost::(:link 1 0 - -37 + -38 2 - :). + :) & e ) { std::cerr << (:link + 1 + + 0 + + -12 + + + 2 + :)(e); } }@] (:include + 1 + + 0 + + -31 + + + 2 + :) @@ -7946,27 +7901,9 @@ - 5 + 1 2 - (:auto !!!:) Exception types should use virtual inheritance when deriving from other exception types. This insight is due to Andrew Koenig. Using virtual inheritance prevents ambiguity problems in the exception handler: [@#include <iostream> struct my_exc1 : std::exception { char const* what() const throw(); }; struct my_exc2 : std::exception { char const* what() const throw(); }; struct your_exc3 : my_exc1, my_exc2 {}; int main() { try { throw your_exc3(); } catch(std::exception const& e) {} catch(...) { std::cout << "whoops!" << std::endl; } }@] The program above outputs "whoops!" because the conversion to std::exception is ambiguous. The overhead introduced by virtual inheritance is always negligible in the context of exception handling. Note that virtual bases are initialized directly by the constructor of the most-derived-type (the type passed to the throw statement, in case of exceptions.) However, typically this detail is of no concern when boost::(:link - 1 - - 0 - - -37 - - - 2 - :) is used, because it enables exception types to be trivial structs with no members (there's nothing to initialize.) See (:link - 1 - - 0 - - -59 - - - 2 - mod="w":). + (:auto !!:) !!!Synopsis (:include synopsis:) @@ -7976,6 +7913,113 @@ -16 + + 15 + 2 + (:auto !!!:) Here is how cloning can be enabled in a throw-expression (15.1): [@#include <(:link + 1 + + 0 + + -40 + + + 2 + :)> #include <(:link + 1 + + 0 + + -29 + + + 2 + :)> #include <stdio.h> #include <errno.h> class file_read_error: public boost::(:link + 1 + + 0 + + -38 + + + 2 + :) { }; void file_read( FILE * f, void * buffer, size_t size ) { if( size!=fread(buffer,1,size,f) ) throw boost::(:link + 1 + + 0 + + -63 + + + 2 + :)(file_read_error()) << boost::(:link + 1 + + 0 + + -53 + + + 2 + :)(errno); }@] Of course, (:link + 1 + + 0 + + -63 + + + 2 + :) may be used with any exception type; there is no requirement that it should derive from boost::(:link + 1 + + 0 + + -38 + + + 2 + :). + + + + + 0 + + -17 + + + + 5 + 2 + (:auto !!!:) (:include synopsis:) This type is designed to be used as a standard + 1 + + 0 + + -9 + + + 2 + instance for transporting a relevant file name in exceptions deriving from boost:: + 1 + + 0 + + -38 + + + 2 + . + + + + + 0 + + -18 + + 1 2 @@ -7986,7 +8030,7 @@ 0 - -17 + -19 @@ -8004,32 +8048,6 @@ > instead. - - - 0 - - -18 - - - - 1 - 2 - (:auto !!:) !!!Synopsis (:include synopsis:) - - - - - 0 - - -19 - - - - 1 - 2 - (:auto !!:) !!!Synopsis (:include synopsis:) - - 0 @@ -8037,6 +8055,41 @@ -20 + + 1 + 2 + (:auto !!:) !!!Synopsis (:include synopsis:) + + + + + 0 + + -21 + + + + 3 + 2 + (:auto !!!:) (:include synopsis:) !!!!Effects: Stores a copy of v in the + 1 + + 0 + + -9 + + + 2 + object. (:include throws:) + + + + + 0 + + -22 + + 5 2 @@ -8045,7 +8098,7 @@ 0 - -62 + -63 2 @@ -8065,7 +8118,7 @@ 0 - -21 + -23 @@ -8076,7 +8129,7 @@ 0 - -8 + -9 2 @@ -8085,7 +8138,7 @@ 0 - -21 + -23 2 @@ -8096,7 +8149,7 @@ 0 - -22 + -24 @@ -8107,7 +8160,7 @@ 0 - -37 + -38 2 @@ -8116,7 +8169,7 @@ 0 - -10 + -12 2 @@ -8125,7 +8178,7 @@ 0 - -22 + -24 2 @@ -8134,39 +8187,13 @@ 0 - -22 + -24 2 (); } }@] - - - 0 - - -23 - - - - 1 - 2 - (:auto !!:) !!!Synopsis (:include synopsis:) - - - - - 0 - - -24 - - - - 1 - 2 - (:auto !!:) !!!Synopsis (:include synopsis:) - - 0 @@ -8188,18 +8215,9 @@ - 3 + 1 2 - (:auto !!!:) (:include synopsis:) !!!!Effects: Stores a copy of v in the - 1 - - 0 - - -8 - - - 2 - object. (:include throws:) + (:auto !!:) !!!Synopsis (:include synopsis:) @@ -8222,693 +8240,6 @@ -28 - - 1 - 2 - (:auto !!:) (:pagelist fmt="index" tags="type":) - - - - - 0 - - -29 - - - - 11 - 2 - !!!!Example: this is a possible output from the (:link - 1 - - 0 - - -10 - - - 2 - :) 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<class fopen_error> std::exception::what: example_io error [struct boost::(:link - 1 - - 0 - - -45 - - - 2 - :)_ *] = fopen [struct boost::(:link - 1 - - 0 - - -51 - - - 2 - :)_ *] = 2, "No such file or directory" [struct boost::(:link - 1 - - 0 - - -30 - - - 2 - :)_ *] = tmp1.txt [struct boost::(:link - 1 - - 0 - - -73 - - - 2 - :)_ *] = rb@] - - - - - 0 - - -30 - - - - 5 - 2 - (:auto !!!:) (:include synopsis:) This type is designed to be used as a standard - 1 - - 0 - - -8 - - - 2 - instance for transporting a relevant file name in exceptions deriving from boost:: - 1 - - 0 - - -37 - - - 2 - . - - - - - 0 - - -31 - - - - 1 - 2 - (:auto !!:) (:pagelist tags="macro":) - - - - - 0 - - -32 - - - - 1 - 2 - (:auto !!:) (:pagelist tags="hpp" except_tags="noindex":) - - - - - 0 - - -33 - - - - 5 - 2 - (:auto !!!:) (:include synopsis:) This type is designed to be used as a standard - 1 - - 0 - - -8 - - - 2 - instance for transporting a relevant FILE pointer managed by a boost::shared_ptr<FILE> in exceptions deriving from boost:: - 1 - - 0 - - -37 - - - 2 - . - - - - - 0 - - -34 - - - - 7 - 2 - (:auto !!!:) (:include synopsis:) !!!!Requirements: E must be boost::(:link - 1 - - 0 - - -37 - - - 2 - :), or a type that derives (indirectly) from boost::(:link - 1 - - 0 - - -37 - - - 2 - :). !!!!Postcondition: A copy of v is stored into x. If x already contains data of type (:link - 1 - - 0 - - -8 - - - 2 - :)<Tag,T>, that data is overwritten. Basic exception safety guarantee. !!!!Returns: x. (:include throws:) - - - - - 0 - - -35 - - - - 13 - 2 - (:auto !!!:) (:include synopsis:) !!!!Requirements: * ErrorInfo must be an instance of the (:link - 1 - - 0 - - -8 - - - 2 - :) template. * E must be polymorphic. !!!!Returns: * If dynamic_cast<boost::(:link - 1 - - 0 - - -37 - - - 2 - :) const *>(&x) is 0, or if x does not store an object of type ErrorInfo, the returned value is null. * Otherwise, the returned pointer points to the stored value (use (:link - 1 - - 0 - - -34 - - - 2 - mod="/":) to store values in exception objects.) When x is destroyed, any pointers returned by (:link - 1 - - 0 - - -35 - - - 2 - :) become invalid. !!!!Throws: Nothing. !!!!Note: The interface of (:link - 1 - - 0 - - -35 - - - 2 - :) may be affected by the build (:link - 1 - - 0 - - -61 - - - 2 - :). - - - - - 0 - - -36 - - - - 71 - 2 - (:auto !!:) !!!Why doesn't boost::exception derive from std::exception? Despite that (:link - 1 - - 0 - - -15 - - - 2 - |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 - 1 - - 0 - - -37 - - - 2 - :) derives from std::exception, using the (:link - 1 - - 0 - - -64 - - - 2 - :) function with such user-defined types would introduce dangerous ambiguity which would break all catch(std::exception &) statements. Of course, boost::(:link - 1 - - 0 - - -37 - - - 2 - :) 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 - 1 - - 0 - - -8 - - - 2 - :) to an active exception object: [@catch( boost::(:link - 1 - - 0 - - -37 - - - 2 - :) & e ) { e (:link - 1 - - 0 - - -34 - - - 2 - |<<:) foo_info(foo); throw e; //Compile error: boost::(:link - 1 - - 0 - - -37 - - - 2 - :) is abstract }@] The correct code is: [@catch( boost::(:link - 1 - - 0 - - -37 - - - 2 - :) & e ) { e (:link - 1 - - 0 - - -34 - - - 2 - |<<:) 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 - 1 - - 0 - - -37 - - - 2 - :) does not by itself cause dynamic memory allocations. Deriving from boost::(:link - 1 - - 0 - - -37 - - - 2 - :) 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. !!!Should I use boost::throw_exception or BOOST_THROW_EXCEPTION or just throw? The benefit of calling boost::(:link - 1 - - 0 - - -70 - - - 2 - :) instead of using throw directly is that it ensures that the emitted exception derives from boost::(:link - 1 - - 0 - - -37 - - - 2 - :) and that it is compatible with boost::(:link - 1 - - 0 - - -7 - - - 2 - :). The (:link - 1 - - 0 - - -65 - - - 2 - :) macro also results in a call to boost::(:link - 1 - - 0 - - -70 - - - 2 - :), 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 - 1 - - 0 - - -10 - - - 2 - :) to compose a more useful, if not user-friendly message. Typical use of boost::(:link - 1 - - 0 - - -10 - - - 2 - :) 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 - 1 - - 0 - - -65 - - - 2 - :) is used: [@example_io.cpp(83): Throw in function void parse_file(const char *) Dynamic exception type: class file_open_error std::exception::what: example_io error [struct tag_errno_code *] = 2, OS says "No such file or directory" [struct tag_file_name *] = tmp1.xml [struct tag_function *] = fopen [struct tag_open_mode *] = rb@] !!!Why is boost::exception integrated in boost::throw_exception? The boost::(:link - 1 - - 0 - - -70 - - - 2 - :) function predates the Boost Exception library and there has been some concern about its current behavior of injecting boost::(:link - 1 - - 0 - - -37 - - - 2 - :) as a base of any exception passed to boost::(:link - 1 - - 0 - - -70 - - - 2 - :). 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 - 1 - - 0 - - -37 - - - 2 - :), 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 - 1 - - 0 - - -71 - - - 2 - :), but this requires that Boost Serialization throws exceptions using boost::(:link - 1 - - 0 - - -62 - - - 2 - :). If Boost Serialization calls boost::(:link - 1 - - 0 - - -70 - - - 2 - :) 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 - 1 - - 0 - - -37 - - - 2 - :), it is often desirable to add one or more (:link - 1 - - 0 - - -8 - - - 2 - :) objects in it. The syntactic sugar provided by (:link - 1 - - 0 - - -34 - - - 2 - :) allows this to be done directly in a throw expression: [@throw error() (:link - 1 - - 0 - - -34 - - - 2 - |<<:) foo_info(foo) (:link - 1 - - 0 - - -34 - - - 2 - |<<:) 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 - 1 - - 0 - - -34 - - - 2 - |<<:) file_name(fn);@] The intention here is to throw a file_open_error, however if (:link - 1 - - 0 - - -34 - - - 2 - mod="/":) fails to copy the std::string contained in the file_name - 1 - - 0 - - -8 - - - 2 - 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."'' So, an attempt to throw any exception may already result in propagating std::bad_alloc instead. - - - - - 0 - - -37 - - - - 13 - 2 - (:auto !!!:) (:include synopsis:) Class boost::(:link - 1 - - 0 - - -37 - - - 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 - - -37 - - - 2 - :) can store data of arbitrary types, using the (:link - 1 - - 0 - - -8 - - - 2 - :) wrapper and (:link - 1 - - 0 - - -34 - - - 2 - mod="/":). To retrieve data from a boost::(:link - 1 - - 0 - - -37 - - - 2 - :) object, use the (:link - 1 - - 0 - - -35 - - - 2 - :) function template. - - - - - 0 - - -38 - - - - 1 - 2 - (:auto !!!:) !!!Synopsis (:include synopsis:) - - - - - 0 - - -39 - - - - 1 - 2 - (:auto !!:) !!!Synopsis (:include synopsis:) - - - - - 0 - - -40 - - 19 2 @@ -8917,7 +8248,7 @@ 0 - -37 + -38 2 @@ -8935,7 +8266,7 @@ 0 - -37 + -38 2 @@ -8944,7 +8275,7 @@ 0 - -51 + -53 2 @@ -8962,7 +8293,7 @@ 0 - -37 + -38 2 @@ -8971,7 +8302,7 @@ 0 - -30 + -17 2 @@ -8980,7 +8311,7 @@ 0 - -37 + -38 2 @@ -8989,13 +8320,682 @@ 0 - -37 + -38 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''. + + + 0 + + -29 + + + + 1 + 2 + (:auto !!:) !!!Synopsis (:include synopsis:) + + + + + 0 + + -30 + + + + 1 + 2 + (:auto !!:) (:pagelist fmt="index" tags="type":) + + + + + 0 + + -31 + + + + 11 + 2 + !!!!Example: this is a possible output from the (:link + 1 + + 0 + + -12 + + + 2 + :) 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<class fopen_error> std::exception::what: example_io error [struct boost::(:link + 1 + + 0 + + -46 + + + 2 + :)_ *] = fopen [struct boost::(:link + 1 + + 0 + + -53 + + + 2 + :)_ *] = 2, "No such file or directory" [struct boost::(:link + 1 + + 0 + + -17 + + + 2 + :)_ *] = tmp1.txt [struct boost::(:link + 1 + + 0 + + -52 + + + 2 + :)_ *] = rb@] + + + + + 0 + + -32 + + + + 1 + 2 + (:auto !!:) (:pagelist tags="macro":) + + + + + 0 + + -33 + + + + 1 + 2 + (:auto !!:) (:pagelist tags="hpp" except_tags="noindex":) + + + + + 0 + + -34 + + + + 5 + 2 + (:auto !!!:) (:include synopsis:) This type is designed to be used as a standard + 1 + + 0 + + -9 + + + 2 + instance for transporting a relevant FILE pointer managed by a boost::shared_ptr<FILE> in exceptions deriving from boost:: + 1 + + 0 + + -38 + + + 2 + . + + + + + 0 + + -35 + + + + 7 + 2 + (:auto !!!:) (:include synopsis:) !!!!Requirements: E must be boost::(:link + 1 + + 0 + + -38 + + + 2 + :), or a type that derives (indirectly) from boost::(:link + 1 + + 0 + + -38 + + + 2 + :). !!!!Postcondition: A copy of v is stored into x. If x already contains data of type (:link + 1 + + 0 + + -9 + + + 2 + :)<Tag,T>, that data is overwritten. Basic exception safety guarantee. !!!!Returns: x. (:include throws:) + + + + + 0 + + -36 + + + + 13 + 2 + (:auto !!!:) (:include synopsis:) !!!!Requirements: * ErrorInfo must be an instance of the (:link + 1 + + 0 + + -9 + + + 2 + :) template. * E must be polymorphic. !!!!Returns: * If dynamic_cast<boost::(:link + 1 + + 0 + + -38 + + + 2 + :) const *>(&x) is 0, or if x does not store an object of type ErrorInfo, the returned value is null. * Otherwise, the returned pointer points to the stored value (use (:link + 1 + + 0 + + -35 + + + 2 + mod="/":) to store values in exception objects.) When x is destroyed, any pointers returned by (:link + 1 + + 0 + + -36 + + + 2 + :) become invalid. !!!!Throws: Nothing. !!!!Note: The interface of (:link + 1 + + 0 + + -36 + + + 2 + :) may be affected by the build (:link + 1 + + 0 + + -62 + + + 2 + :). + + + + + 0 + + -37 + + + + 71 + 2 + (:auto !!:) !!!Why doesn't boost::exception derive from std::exception? Despite that (:link + 1 + + 0 + + -11 + + + 2 + |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 + 1 + + 0 + + -38 + + + 2 + :) derives from std::exception, using the (:link + 1 + + 0 + + -65 + + + 2 + :) function with such user-defined types would introduce dangerous ambiguity which would break all catch(std::exception &) statements. Of course, boost::(:link + 1 + + 0 + + -38 + + + 2 + :) 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 + 1 + + 0 + + -9 + + + 2 + :) to an active exception object: [@catch( boost::(:link + 1 + + 0 + + -38 + + + 2 + :) & e ) { e (:link + 1 + + 0 + + -35 + + + 2 + |<<:) foo_info(foo); throw e; //Compile error: boost::(:link + 1 + + 0 + + -38 + + + 2 + :) is abstract }@] The correct code is: [@catch( boost::(:link + 1 + + 0 + + -38 + + + 2 + :) & e ) { e (:link + 1 + + 0 + + -35 + + + 2 + |<<:) 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 + 1 + + 0 + + -38 + + + 2 + :) does not by itself cause dynamic memory allocations. Deriving from boost::(:link + 1 + + 0 + + -38 + + + 2 + :) 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. !!!Should I use boost::throw_exception or BOOST_THROW_EXCEPTION or just throw? The benefit of calling boost::(:link + 1 + + 0 + + -71 + + + 2 + :) instead of using throw directly is that it ensures that the emitted exception derives from boost::(:link + 1 + + 0 + + -38 + + + 2 + :) and that it is compatible with boost::(:link + 1 + + 0 + + -7 + + + 2 + :). The (:link + 1 + + 0 + + -66 + + + 2 + :) macro also results in a call to boost::(:link + 1 + + 0 + + -71 + + + 2 + :), 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 + 1 + + 0 + + -12 + + + 2 + :) to compose a more useful, if not user-friendly message. Typical use of boost::(:link + 1 + + 0 + + -12 + + + 2 + :) 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 + 1 + + 0 + + -66 + + + 2 + :) is used: [@example_io.cpp(83): Throw in function void parse_file(const char *) Dynamic exception type: class file_open_error std::exception::what: example_io error [struct tag_errno_code *] = 2, OS says "No such file or directory" [struct tag_file_name *] = tmp1.xml [struct tag_function *] = fopen [struct tag_open_mode *] = rb@] !!!Why is boost::exception integrated in boost::throw_exception? The boost::(:link + 1 + + 0 + + -71 + + + 2 + :) function predates the Boost Exception library and there has been some concern about its current behavior of injecting boost::(:link + 1 + + 0 + + -38 + + + 2 + :) as a base of any exception passed to boost::(:link + 1 + + 0 + + -71 + + + 2 + :). 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 + 1 + + 0 + + -38 + + + 2 + :), 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 + 1 + + 0 + + -72 + + + 2 + :), but this requires that Boost Serialization throws exceptions using boost::(:link + 1 + + 0 + + -63 + + + 2 + :). If Boost Serialization calls boost::(:link + 1 + + 0 + + -71 + + + 2 + :) 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 + 1 + + 0 + + -38 + + + 2 + :), it is often desirable to add one or more (:link + 1 + + 0 + + -9 + + + 2 + :) objects in it. The syntactic sugar provided by (:link + 1 + + 0 + + -35 + + + 2 + :) allows this to be done directly in a throw expression: [@throw error() (:link + 1 + + 0 + + -35 + + + 2 + |<<:) foo_info(foo) (:link + 1 + + 0 + + -35 + + + 2 + |<<:) 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 + 1 + + 0 + + -35 + + + 2 + |<<:) file_name(fn);@] The intention here is to throw a file_open_error, however if (:link + 1 + + 0 + + -35 + + + 2 + mod="/":) fails to copy the std::string contained in the file_name + 1 + + 0 + + -9 + + + 2 + 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."'' So, an attempt to throw any exception may already result in propagating std::bad_alloc instead. + + + + + 0 + + -38 + + + + 13 + 2 + (:auto !!!:) (:include synopsis:) Class boost::(:link + 1 + + 0 + + -38 + + + 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 + + -38 + + + 2 + :) can store data of arbitrary types, using the (:link + 1 + + 0 + + -9 + + + 2 + :) wrapper and (:link + 1 + + 0 + + -35 + + + 2 + mod="/":). To retrieve data from a boost::(:link + 1 + + 0 + + -38 + + + 2 + :) object, use the (:link + 1 + + 0 + + -36 + + + 2 + :) function template. + + + + + 0 + + -39 + + + + 1 + 2 + (:auto !!!:) !!!Synopsis (:include synopsis:) + + + + + 0 + + -40 + + + + 1 + 2 + (:auto !!:) !!!Synopsis (:include synopsis:) + + 0 @@ -9011,7 +9011,7 @@ 0 - -8 + -9 2 @@ -9020,7 +9020,7 @@ 0 - -37 + -38 2 @@ -9042,7 +9042,7 @@ 0 - -62 + -63 2 @@ -9051,7 +9051,7 @@ 0 - -70 + -71 2 @@ -9060,7 +9060,7 @@ 0 - -37 + -38 2 @@ -9069,7 +9069,7 @@ 0 - -14 + -16 2 @@ -9078,7 +9078,7 @@ 0 - -72 + -73 2 @@ -9105,6 +9105,136 @@ -44 + + 27 + 2 + (:auto !!:) Some exception hierarchies can not be modified to make boost::(:link + 1 + + 0 + + -38 + + + 2 + :) a base type. In this case, the (:link + 1 + + 0 + + -65 + + + 2 + :) function template can be used to make exception objects derive from boost::(:link + 1 + + 0 + + -38 + + + 2 + :) anyway. Here is an example: [@#include <(:link + 1 + + 0 + + -75 + + + 2 + :)> #include <stdexcept> typedef boost::(:link + 1 + + 0 + + -9 + + + 2 + :)<struct tag_std_range_min,size_t> std_range_min; typedef boost::(:link + 1 + + 0 + + -9 + + + 2 + :)<struct tag_std_range_max,size_t> std_range_max; typedef boost::(:link + 1 + + 0 + + -9 + + + 2 + :)<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 + 1 + + 0 + + -65 + + + 2 + :)(std::range_error("Index out of range")) << std_range_min(0) << std_range_max(size()) << std_range_index(i); //.... } }; @] The call to (:link + 1 + + 0 + + -65 + + + 2 + :)<T> gets us an object of ''unspecified type'' which is guaranteed to derive from both boost::(:link + 1 + + 0 + + -38 + + + 2 + :) and T. This makes it possible to use (:link + 1 + + 0 + + -35 + + + 2 + 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 + 1 + + 0 + + -38 + + + 2 + :) &, so that (:link + 1 + + 0 + + -55 + + + 2 + |more information can be added to the exception at a later time:). + + + + + 0 + + -45 + + 17 2 @@ -9122,7 +9252,7 @@ 0 - -8 + -9 2 @@ -9131,7 +9261,7 @@ 0 - -37 + -38 2 @@ -9140,7 +9270,7 @@ 0 - -8 + -9 2 @@ -9149,7 +9279,7 @@ 0 - -37 + -38 2 @@ -9158,7 +9288,7 @@ 0 - -34 + -35 2 @@ -9167,7 +9297,7 @@ 0 - -35 + -36 2 @@ -9176,7 +9306,7 @@ 0 - -35 + -36 2 @@ -9187,7 +9317,7 @@ 0 - -45 + -46 @@ -9198,7 +9328,7 @@ 0 - -8 + -9 2 @@ -9207,7 +9337,7 @@ 0 - -37 + -38 2 @@ -9218,7 +9348,7 @@ 0 - -46 + -47 @@ -9231,7 +9361,7 @@ 0 - -47 + -48 @@ -9242,7 +9372,7 @@ 0 - -8 + -9 2 @@ -9260,7 +9390,7 @@ 0 - -71 + -72 2 @@ -9269,7 +9399,7 @@ 0 - -68 + -69 2 @@ -9280,7 +9410,7 @@ 0 - -48 + -49 @@ -9291,7 +9421,7 @@ 0 - -37 + -38 2 @@ -9300,7 +9430,7 @@ 0 - -37 + -38 2 @@ -9309,7 +9439,7 @@ 0 - -34 + -35 2 @@ -9320,7 +9450,7 @@ 0 - -49 + -50 @@ -9329,37 +9459,6 @@ (:auto !!!:) (:include synopsis:) !!!!Precondition: ep shall not be null. !!!!Throws: The exception to which ep refers. - - - 0 - - -50 - - - - 5 - 2 - (:auto !!!:) (:include synopsis:) This type is designed to be used as a standard - 1 - - 0 - - -8 - - - 2 - instance for transporting strings returned by std::type_info::name in exceptions deriving from boost:: - 1 - - 0 - - -37 - - - 2 - objects. - - 0 @@ -9375,16 +9474,47 @@ 0 - -8 + -9 2 - instance for transporting a relevant errno value in exceptions deriving from boost:: + instance for transporting strings returned by std::type_info::name in exceptions deriving from boost:: 1 0 - -37 + -38 + + + 2 + objects. + + + + + 0 + + -52 + + + + 5 + 2 + (:auto !!!:) (:include synopsis:) This type is designed to be used as a standard + 1 + + 0 + + -9 + + + 2 + instance for transporting the string passed as a second argument to fopen in exceptions indicating fopen failures and deriving from boost:: + 1 + + 0 + + -38 2 @@ -9395,7 +9525,38 @@ 0 - -52 + -53 + + + + 5 + 2 + (:auto !!!:) (:include synopsis:) This type is designed to be used as a standard + 1 + + 0 + + -9 + + + 2 + instance for transporting a relevant errno value in exceptions deriving from boost:: + 1 + + 0 + + -38 + + + 2 + . + + + + + 0 + + -54 @@ -9408,7 +9569,7 @@ 0 - -53 + -55 @@ -9419,7 +9580,7 @@ 0 - -37 + -38 2 @@ -9428,7 +9589,7 @@ 0 - -37 + -38 2 @@ -9437,7 +9598,7 @@ 0 - -44 + -45 2 @@ -9446,7 +9607,7 @@ 0 - -40 + -28 2 @@ -9455,7 +9616,7 @@ 0 - -55 + -57 2 @@ -9466,7 +9627,7 @@ 0 - -54 + -56 @@ -9486,7 +9647,7 @@ 0 - -70 + -71 2 @@ -9495,7 +9656,7 @@ 0 - -58 + -59 2 @@ -9504,7 +9665,7 @@ 0 - -53 + -55 2 @@ -9513,7 +9674,7 @@ 0 - -56 + -44 2 @@ -9531,7 +9692,7 @@ 0 - -59 + -60 2 @@ -9540,7 +9701,7 @@ 0 - -15 + -11 2 @@ -9549,7 +9710,7 @@ 0 - -12 + -14 2 @@ -9558,7 +9719,7 @@ 0 - -37 + -38 2 @@ -9567,7 +9728,7 @@ 0 - -65 + -66 2 @@ -9576,7 +9737,7 @@ 0 - -70 + -71 2 @@ -9585,25 +9746,7 @@ 0 - -8 - - - 2 - :) ###(:link - 1 - - 0 - - -34 - - - 2 - :) ###(:link - 1 - - 0 - - -57 + -9 2 @@ -9621,16 +9764,7 @@ 0 - -64 - - - 2 - :) ##(:link http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html|N2179:) Transporting of Exceptions between Threads ###(:link - 1 - - 0 - - -71 + -58 2 @@ -9639,7 +9773,34 @@ 0 - -62 + -36 + + + 2 + :) ###(:link + 1 + + 0 + + -65 + + + 2 + :) ##(:link http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html|N2179:) Transporting of Exceptions between Threads ###(:link + 1 + + 0 + + -72 + + + 2 + :) ###(:link + 1 + + 0 + + -63 2 @@ -9657,7 +9818,7 @@ 0 - -20 + -22 2 @@ -9666,7 +9827,7 @@ 0 - -49 + -50 2 @@ -9675,7 +9836,7 @@ 0 - -68 + -69 2 @@ -9684,7 +9845,7 @@ 0 - -10 + -12 2 @@ -9693,7 +9854,7 @@ 0 - -22 + -24 2 @@ -9717,6 +9878,33 @@ 2 :) ##(:link 1 + + 0 + + -33 + + + 2 + :) ##(:link + 1 + + 0 + + -30 + + + 2 + :) ##(:link + 1 + + 0 + + -67 + + + 2 + :) ##(:link + 1 0 @@ -9729,34 +9917,7 @@ 0 - -28 - - - 2 - :) ##(:link - 1 - - 0 - - -66 - - - 2 - :) ##(:link - 1 - - 0 - - -31 - - - 2 - :) ##(:link - 1 - - 0 - - -61 + -62 2 @@ -9765,7 +9926,7 @@ 0 - -36 + -37 2 @@ -9774,7 +9935,7 @@ 0 - -16 + -18 2 @@ -9785,7 +9946,7 @@ 0 - -55 + -57 @@ -9796,7 +9957,7 @@ 0 - -11 + -13 2 @@ -9805,7 +9966,7 @@ 0 - -19 + -8 2 @@ -9814,7 +9975,7 @@ 0 - -9 + -10 2 @@ -9823,7 +9984,7 @@ 0 - -27 + -29 2 @@ -9832,7 +9993,7 @@ 0 - -45 + -46 2 @@ -9841,7 +10002,7 @@ 0 - -51 + -53 2 @@ -9850,7 +10011,7 @@ 0 - -37 + -38 2 @@ -9859,7 +10020,7 @@ 0 - -30 + -17 2 @@ -9868,7 +10029,7 @@ 0 - -35 + -36 2 @@ -9879,137 +10040,7 @@ 0 - -56 - - - - 27 - 2 - (:auto !!:) Some exception hierarchies can not be modified to make boost::(:link - 1 - - 0 - - -37 - - - 2 - :) a base type. In this case, the (:link - 1 - - 0 - - -64 - - - 2 - :) function template can be used to make exception objects derive from boost::(:link - 1 - - 0 - - -37 - - - 2 - :) anyway. Here is an example: [@#include <(:link - 1 - - 0 - - -75 - - - 2 - :)> #include <stdexcept> typedef boost::(:link - 1 - - 0 - - -8 - - - 2 - :)<struct tag_std_range_min,size_t> std_range_min; typedef boost::(:link - 1 - - 0 - - -8 - - - 2 - :)<struct tag_std_range_max,size_t> std_range_max; typedef boost::(:link - 1 - - 0 - - -8 - - - 2 - :)<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 - 1 - - 0 - - -64 - - - 2 - :)(std::range_error("Index out of range")) << std_range_min(0) << std_range_max(size()) << std_range_index(i); //.... } }; @] The call to (:link - 1 - - 0 - - -64 - - - 2 - :)<T> gets us an object of ''unspecified type'' which is guaranteed to derive from both boost::(:link - 1 - - 0 - - -37 - - - 2 - :) and T. This makes it possible to use (:link - 1 - - 0 - - -34 - - - 2 - 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 - 1 - - 0 - - -37 - - - 2 - :) &, so that (:link - 1 - - 0 - - -53 - - - 2 - |more information can be added to the exception at a later time:). - - - - - 0 - - -57 + -58 @@ -10020,7 +10051,7 @@ 0 - -37 + -38 2 @@ -10029,7 +10060,7 @@ 0 - -37 + -38 2 @@ -10040,7 +10071,7 @@ 0 - -58 + -59 @@ -10051,7 +10082,7 @@ 0 - -37 + -38 2 @@ -10060,7 +10091,7 @@ 0 - -37 + -38 2 @@ -10069,7 +10100,7 @@ 0 - -8 + -9 2 @@ -10078,7 +10109,7 @@ 0 - -34 + -35 2 @@ -10087,7 +10118,7 @@ 0 - -37 + -38 2 @@ -10096,7 +10127,7 @@ 0 - -8 + -9 2 @@ -10105,7 +10136,7 @@ 0 - -37 + -38 2 @@ -10114,7 +10145,7 @@ 0 - -34 + -35 2 @@ -10123,7 +10154,7 @@ 0 - -37 + -38 2 @@ -10132,7 +10163,7 @@ 0 - -34 + -35 2 @@ -10141,7 +10172,7 @@ 0 - -37 + -38 2 @@ -10150,7 +10181,7 @@ 0 - -35 + -36 2 @@ -10159,7 +10190,7 @@ 0 - -35 + -36 2 @@ -10168,7 +10199,7 @@ 0 - -10 + -12 2 @@ -10177,7 +10208,7 @@ 0 - -8 + -9 2 @@ -10186,7 +10217,7 @@ 0 - -37 + -38 2 @@ -10197,7 +10228,7 @@ 0 - -59 + -60 @@ -10208,7 +10239,7 @@ 0 - -37 + -38 2 @@ -10217,7 +10248,7 @@ 0 - -37 + -38 2 @@ -10226,7 +10257,7 @@ 0 - -37 + -38 2 @@ -10237,7 +10268,7 @@ 0 - -60 + -61 @@ -10250,7 +10281,7 @@ 0 - -61 + -62 @@ -10261,7 +10292,7 @@ 0 - -35 + -36 2 @@ -10270,7 +10301,7 @@ 0 - -35 + -36 2 @@ -10279,7 +10310,7 @@ 0 - -37 + -38 2 @@ -10288,7 +10319,7 @@ 0 - -62 + -63 2 @@ -10297,7 +10328,7 @@ 0 - -64 + -65 2 @@ -10306,7 +10337,7 @@ 0 - -70 + -71 2 @@ -10315,7 +10346,7 @@ 0 - -18 + -20 2 @@ -10324,7 +10355,7 @@ 0 - -70 + -71 2 @@ -10333,7 +10364,7 @@ 0 - -10 + -12 2 @@ -10344,7 +10375,7 @@ 0 - -62 + -63 @@ -10355,7 +10386,7 @@ 0 - -71 + -72 2 @@ -10364,7 +10395,7 @@ 0 - -62 + -63 2 @@ -10373,7 +10404,7 @@ 0 - -62 + -63 2 @@ -10391,7 +10422,7 @@ 0 - -71 + -72 2 @@ -10400,7 +10431,7 @@ 0 - -68 + -69 2 @@ -10418,7 +10449,7 @@ 0 - -70 + -71 2 @@ -10427,7 +10458,7 @@ 0 - -37 + -38 2 @@ -10436,7 +10467,7 @@ 0 - -71 + -72 2 @@ -10447,7 +10478,7 @@ 0 - -63 + -64 @@ -10458,7 +10489,7 @@ 0 - -37 + -38 2 @@ -10469,7 +10500,7 @@ 0 - -64 + -65 @@ -10480,7 +10511,7 @@ 0 - -37 + -38 2 @@ -10489,7 +10520,7 @@ 0 - -37 + -38 2 @@ -10500,7 +10531,7 @@ 0 - -65 + -66 @@ -10511,7 +10542,7 @@ 0 - -70 + -71 2 @@ -10520,7 +10551,7 @@ 0 - -35 + -36 2 @@ -10529,7 +10560,7 @@ 0 - -10 + -12 2 @@ -10540,7 +10571,7 @@ 0 - -66 + -67 @@ -10553,7 +10584,7 @@ 0 - -67 + -68 @@ -10564,7 +10595,7 @@ 0 - -8 + -9 2 @@ -10573,7 +10604,7 @@ 0 - -8 + -9 2 @@ -10584,7 +10615,7 @@ 0 - -68 + -69 @@ -10595,7 +10626,7 @@ 0 - -71 + -72 2 @@ -10615,7 +10646,7 @@ 0 - -69 + -70 @@ -10628,7 +10659,7 @@ 0 - -70 + -71 @@ -10639,7 +10670,7 @@ 0 - -70 + -71 2 @@ -10648,7 +10679,7 @@ 0 - -62 + -63 2 @@ -10657,7 +10688,7 @@ 0 - -64 + -65 2 @@ -10666,7 +10697,7 @@ 0 - -70 + -71 2 @@ -10675,7 +10706,7 @@ 0 - -70 + -71 2 @@ -10684,7 +10715,7 @@ 0 - -70 + -71 2 @@ -10693,7 +10724,7 @@ 0 - -35 + -36 2 @@ -10702,7 +10733,7 @@ 0 - -10 + -12 2 @@ -10713,7 +10744,7 @@ 0 - -71 + -72 @@ -10724,7 +10755,7 @@ 0 - -71 + -72 2 @@ -10733,7 +10764,7 @@ 0 - -71 + -72 2 @@ -10742,7 +10773,7 @@ 0 - -71 + -72 2 @@ -10751,7 +10782,7 @@ 0 - -71 + -72 2 @@ -10760,7 +10791,7 @@ 0 - -71 + -72 2 @@ -10769,7 +10800,7 @@ 0 - -71 + -72 2 @@ -10778,7 +10809,7 @@ 0 - -71 + -72 2 @@ -10796,7 +10827,7 @@ 0 - -49 + -50 2 @@ -10805,7 +10836,7 @@ 0 - -71 + -72 2 @@ -10814,7 +10845,7 @@ 0 - -8 + -9 2 @@ -10823,7 +10854,7 @@ 0 - -37 + -38 2 @@ -10834,7 +10865,7 @@ 0 - -72 + -73 @@ -10854,7 +10885,7 @@ 0 - -71 + -72 2 @@ -10863,7 +10894,7 @@ 0 - -25 + -27 2 @@ -10872,7 +10903,7 @@ 0 - -37 + -38 2 @@ -10881,7 +10912,7 @@ 0 - -71 + -72 2 @@ -10890,7 +10921,7 @@ 0 - -71 + -72 2 @@ -10917,7 +10948,7 @@ 0 - -49 + -50 2 @@ -10926,7 +10957,7 @@ 0 - -71 + -72 2 @@ -10935,7 +10966,7 @@ 0 - -49 + -50 2 @@ -10953,7 +10984,7 @@ 0 - -71 + -72 2 @@ -10962,7 +10993,7 @@ 0 - -62 + -63 2 @@ -10971,7 +11002,7 @@ 0 - -71 + -72 2 @@ -10980,7 +11011,7 @@ 0 - -68 + -69 2 @@ -10998,44 +11029,13 @@ 0 - -49 + -50 2 :) in the above examples is well-formed. - - - 0 - - -73 - - - - 5 - 2 - (:auto !!!:) (:include synopsis:) This type is designed to be used as a standard - 1 - - 0 - - -8 - - - 2 - instance for transporting the string passed as a second argument to fopen in exceptions indicating fopen failures and deriving from boost:: - 1 - - 0 - - -37 - - - 2 - . - - 0 @@ -11273,7 +11273,9 @@ - 0 + 1 + 2 + !!!!Throws: Any exception emitted by v's copy constructor. @@ -11328,9 +11330,7 @@ - 1 - 2 - !!!!Throws: Any exception emitted by v's copy constructor. + 0 @@ -11418,9 +11418,7 @@ - 1 - 2 - !!!!Throws: std::bad_alloc, or any exception emitted by the T copy constructor. + 0 @@ -11431,7 +11429,9 @@ - 0 + 1 + 2 + !!!!Throws: std::bad_alloc, or any exception emitted by the T copy constructor. @@ -11673,9 +11673,7 @@ - 1 - 2 - !!!!Throws: std::bad_alloc, or any exception emitted by T1..TN copy constructor. + 0 @@ -11686,7 +11684,9 @@ - 0 + 1 + 2 + !!!!Throws: std::bad_alloc, or any exception emitted by T1..TN copy constructor. @@ -11927,7 +11927,7 @@ 0 - -52 + -54 2 @@ -11949,7 +11949,7 @@ 0 - -25 + -27 2 @@ -11966,16 +11966,16 @@ 3 2 - `#include <(:link + [@#include < 1 0 - -39 + -61 2 - :)> [@namespace boost { (:include def pre_indent="4":) }@] + > #include <string> namespace boost { (:include api pre_indent="4":) }@] @@ -11988,16 +11988,16 @@ 3 2 - [@#include < + `#include <(:link 1 0 - -60 + -40 2 - > namespace boost { (:include api pre_indent="4":) }@] + :)> [@namespace boost { (:include def pre_indent="4":) }@] @@ -12010,16 +12010,16 @@ 3 2 - `#include <(:link + [@#include < 1 0 - -46 + -61 2 - :)>\\ [@namespace boost { (:include decl pre_indent="4":) }@] + > namespace boost { (:include api pre_indent="4":) }@] @@ -12030,18 +12030,7 @@ - 3 - 2 - [@#include < - 1 - - 0 - - -39 - - - 2 - > #include <boost/tuple/tuple.hpp> namespace boost { (:include api pre_indent="4":) }@] + 0 @@ -12052,7 +12041,18 @@ - 0 + 3 + 2 + `#include <(:link + 1 + + 0 + + -47 + + + 2 + :)>\\ [@namespace boost { (:include decl pre_indent="4":) }@] @@ -12063,9 +12063,18 @@ - 1 + 3 2 - [@namespace boost { (:include api pre_indent="4":) }@] + [@#include < + 1 + + 0 + + -40 + + + 2 + > #include <boost/tuple/tuple.hpp> namespace boost { (:include api pre_indent="4":) }@] @@ -12087,7 +12096,9 @@ - 0 + 1 + 2 + [@namespace boost { (:include api pre_indent="4":) }@] @@ -12109,7 +12120,27 @@ - 0 + 5 + 2 + `#include < + 1 + + 0 + + -8 + + + 2 + > (:include + 1 + + 0 + + -8 + + + 2 + synopsis:) @@ -12120,9 +12151,7 @@ - 1 - 2 - (:include api:) + 0 @@ -12133,18 +12162,7 @@ - 3 - 2 - [@#include < - 1 - - 0 - - -60 - - - 2 - > #include <string> namespace boost { (:include api pre_indent="4":) }@] + 0 @@ -12155,18 +12173,9 @@ - 3 + 1 2 - `#include <(:link - 1 - - 0 - - -25 - - - 2 - :)> [@namespace boost { (:include decl pre_indent="4":) }@] + (:include api:) @@ -12184,7 +12193,7 @@ 0 - -39 + -40 2 @@ -12206,11 +12215,11 @@ 0 - -46 + -27 2 - :)>\\ [@namespace boost { (:include decl pre_indent="4":) }@] + :)> [@namespace boost { (:include decl pre_indent="4":) }@] @@ -12223,16 +12232,16 @@ 3 2 - [@#include < + `#include <(:link 1 0 - -60 + -40 2 - > namespace boost { (:include api pre_indent="4":) }@] + :)> [@(:include decl:)@] @@ -12245,16 +12254,16 @@ 3 2 - [@#include < + `#include <(:link 1 0 - -60 + -47 2 - > #include <string> namespace boost { (:include api pre_indent="4":) }@] + :)>\\ [@namespace boost { (:include decl pre_indent="4":) }@] @@ -12267,16 +12276,16 @@ 3 2 - [@#include <(:link + [@#include < 1 0 - -52 + -61 2 - :)> namespace boost { (:include api pre_indent="4":) }@] + > namespace boost { (:include api pre_indent="4":) }@] @@ -12289,16 +12298,16 @@ 3 2 - `#include <(:link + [@#include < 1 0 - -39 + -61 2 - :)> [@(:include decl:)@] + > #include <string> namespace boost { (:include api pre_indent="4":) }@] @@ -12311,16 +12320,16 @@ 3 2 - [@#include < + [@#include <(:link 1 0 - -60 + -54 2 - > #include <errno.h> namespace boost { (:include api pre_indent="4":) }@] + :)> namespace boost { (:include api pre_indent="4":) }@] @@ -12342,7 +12351,18 @@ - 0 + 3 + 2 + [@#include < + 1 + + 0 + + -61 + + + 2 + > #include <errno.h> namespace boost { (:include api pre_indent="4":) }@] @@ -12353,27 +12373,7 @@ - 5 - 2 - `#include < - 1 - - 0 - - -19 - - - 2 - > (:include - 1 - - 0 - - -19 - - - 2 - synopsis:) + 0 @@ -12405,6 +12405,17 @@ -33 + + 0 + + + + + 0 + + -34 + + 5 2 @@ -12433,7 +12444,7 @@ 0 - -34 + -35 @@ -12444,7 +12455,7 @@ 0 - -39 + -40 2 @@ -12455,7 +12466,7 @@ 0 - -35 + -36 @@ -12464,17 +12475,6 @@ [@namespace boost { (:include decl pre_indent="4":) }@] - - - 0 - - -36 - - - - 0 - - 0 @@ -12483,18 +12483,7 @@ - 3 - 2 - `#include <(:link - 1 - - 0 - - -52 - - - 2 - :)> [@namespace boost { (:include def pre_indent="4":) }@] + 0 @@ -12507,16 +12496,16 @@ 3 2 - [@#include < + `#include <(:link 1 0 - -52 + -54 2 - > namespace boost { (:include api pre_indent="4":) }@] + :)> [@namespace boost { (:include def pre_indent="4":) }@] @@ -12529,16 +12518,16 @@ 3 2 - [@#include <(:link + [@#include < 1 0 - -52 + -54 2 - :)> namespace boost { (:include api pre_indent="4":) }@] + > namespace boost { (:include api pre_indent="4":) }@] @@ -12549,7 +12538,18 @@ - 0 + 3 + 2 + [@#include <(:link + 1 + + 0 + + -54 + + + 2 + :)> namespace boost { (:include api pre_indent="4":) }@] @@ -12567,7 +12567,7 @@ 0 - -23 + -25 2 @@ -12576,7 +12576,7 @@ 0 - -23 + -25 2 @@ -12609,7 +12609,7 @@ 0 - -13 + -15 2 @@ -12635,27 +12635,7 @@ - 5 - 2 - `#include < - 1 - - 0 - - -9 - - - 2 - > (:include - 1 - - 0 - - -9 - - - 2 - synopsis:) + 0 @@ -12666,18 +12646,27 @@ - 3 + 5 2 - [@#include <string> namespace boost { (:include + `#include < 1 0 - -37 + -10 2 - decl pre_indent="4":) (:include api pre_indent="4":) }@] + > (:include + 1 + + 0 + + -10 + + + 2 + synopsis:) @@ -12690,16 +12679,16 @@ 3 2 - `#include < + [@#include <string> namespace boost { (:include 1 0 - -25 + -38 2 - > [@namespace boost { (:include decl pre_indent="4":) }@] + decl pre_indent="4":) (:include api pre_indent="4":) }@] @@ -12710,7 +12699,18 @@ - 0 + 3 + 2 + `#include < + 1 + + 0 + + -27 + + + 2 + > [@namespace boost { (:include decl pre_indent="4":) }@] @@ -12721,18 +12721,7 @@ - 3 - 2 - `#include <(:link - 1 - - 0 - - -25 - - - 2 - :)> [@namespace boost { (:include decl pre_indent="4":) }@] + 0 @@ -12743,27 +12732,18 @@ - 5 + 3 2 - `#include < + `#include <(:link 1 0 - -24 + -27 2 - > (:include - 1 - - 0 - - -24 - - - 2 - synopsis:) + :)> [@namespace boost { (:include decl pre_indent="4":) }@] @@ -12781,7 +12761,7 @@ 0 - -27 + -26 2 @@ -12790,7 +12770,7 @@ 0 - -27 + -26 2 @@ -12805,9 +12785,27 @@ - 1 + 5 2 - [@namespace boost { (:include api pre_indent="4":) }@] + `#include < + 1 + + 0 + + -74 + + + 2 + > (:include + 1 + + 0 + + -74 + + + 2 + synopsis:) @@ -12818,7 +12816,27 @@ - 0 + 5 + 2 + `#include < + 1 + + 0 + + -29 + + + 2 + > (:include + 1 + + 0 + + -29 + + + 2 + synopsis:) @@ -12829,7 +12847,9 @@ - 0 + 1 + 2 + [@namespace boost { (:include api pre_indent="4":) }@] @@ -12862,27 +12882,7 @@ - 5 - 2 - `#include <(:link - 1 - - 0 - - -11 - - - 2 - :)> [@namespace boost { (:include - 1 - - 0 - - -57 - - - 2 - decl pre_indent="4":) }@] + 0 @@ -12893,7 +12893,27 @@ - 0 + 5 + 2 + `#include <(:link + 1 + + 0 + + -13 + + + 2 + :)> [@namespace boost { (:include + 1 + + 0 + + -58 + + + 2 + decl pre_indent="4":) }@] @@ -12915,9 +12935,7 @@ - 1 - 2 - [@namespace boost { (:include api pre_indent="4":) }@] + 0 @@ -12928,7 +12946,9 @@ - 0 + 1 + 2 + [@namespace boost { (:include api pre_indent="4":) }@] @@ -12939,18 +12959,7 @@ - 3 - 2 - `#include < - 1 - - 0 - - -38 - - - 2 - > [@namespace boost { (:include decl pre_indent="4":) }@] + 0 @@ -12961,7 +12970,18 @@ - 0 + 3 + 2 + `#include < + 1 + + 0 + + -39 + + + 2 + > [@namespace boost { (:include decl pre_indent="4":) }@] @@ -12971,6 +12991,17 @@ -64 + + 0 + + + + + 0 + + -65 + + 3 2 @@ -12990,7 +13021,7 @@ 0 - -65 + -66 @@ -13001,24 +13032,13 @@ 0 - -18 + -20 2 > (:include decl:) - - - 0 - - -66 - - - - 0 - - 0 @@ -13027,18 +13047,7 @@ - 3 - 2 - `#include <(:link - 1 - - 0 - - -39 - - - 2 - :)> [@(:include decl:)@] + 0 @@ -13056,11 +13065,11 @@ 0 - -25 + -40 2 - :)> [@namespace boost { (:include decl pre_indent="4":) }@] + :)> [@(:include decl:)@] @@ -13071,9 +13080,18 @@ - 1 + 3 2 - [@#include <boost/shared_ptr.hpp> namespace boost { (:include api pre_indent="4":) }@] + `#include <(:link + 1 + + 0 + + -27 + + + 2 + :)> [@namespace boost { (:include decl pre_indent="4":) }@] @@ -13084,18 +13102,9 @@ - 3 + 1 2 - `#include <(:link - 1 - - 0 - - -18 - - - 2 - :)> [@namespace boost { (:include decl:) }@] + [@#include <boost/shared_ptr.hpp> namespace boost { (:include api pre_indent="4":) }@] @@ -13113,11 +13122,11 @@ 0 - -25 + -20 2 - :)> [@namespace boost { (:include decl pre_indent="4":) }@] + :)> [@namespace boost { (:include decl:) }@] @@ -13128,7 +13137,18 @@ - 0 + 3 + 2 + `#include <(:link + 1 + + 0 + + -27 + + + 2 + :)> [@namespace boost { (:include decl pre_indent="4":) }@] @@ -13139,27 +13159,7 @@ - 5 - 2 - `#include < - 1 - - 0 - - -74 - - - 2 - > (:include - 1 - - 0 - - -74 - - - 2 - synopsis:) + 0 @@ -13177,7 +13177,7 @@ 0 - -60 + -61 2 @@ -13212,7 +13212,7 @@ 0 - -60 + -61 2 @@ -13472,7 +13472,7 @@ - -54 + -56 @@ -13506,7 +13506,7 @@ - -53 + -55 @@ -13523,7 +13523,7 @@ - -16 + -18 @@ -13557,41 +13557,7 @@ - -38 - - - - - - - 0 - - - - - - 1 - - - - -58 - - - - - - - 0 - - - - - - 1 - - - - -15 + -39 @@ -13625,7 +13591,7 @@ - -36 + -11 @@ -13642,7 +13608,75 @@ - -66 + -60 + + + + + + + 0 + + + + + + 1 + + + + -37 + + + + + + + 0 + + + + + + 1 + + + + -67 + + + + + + + 0 + + + + + + 1 + + + + -33 + + + + + + + 0 + + + + + + 1 + + + + -30 @@ -13662,40 +13696,6 @@ -32 - - - - - 0 - - - - - - 1 - - - - -28 - - - - - - - 0 - - - - - - 1 - - - - -31 - - @@ -13734,7 +13734,7 @@ - -46 + -47 @@ -13758,7 +13758,7 @@ - -25 + -27 @@ -13782,7 +13782,7 @@ - -19 + -8 @@ -13810,7 +13810,7 @@ - -73 + -52 @@ -13834,7 +13834,7 @@ - -9 + -10 @@ -13862,7 +13862,7 @@ - -68 + -69 @@ -13918,7 +13918,7 @@ - -71 + -72 @@ -13946,7 +13946,7 @@ - -47 + -48 @@ -13974,7 +13974,7 @@ - -49 + -50 @@ -14002,7 +14002,7 @@ - -20 + -22 @@ -14026,7 +14026,7 @@ - -72 + -73 @@ -14054,7 +14054,7 @@ - -50 + -51 @@ -14082,7 +14082,7 @@ - -26 + -21 @@ -14110,7 +14110,7 @@ - -34 + -35 @@ -14134,7 +14134,7 @@ - -27 + -29 @@ -14142,9 +14142,9 @@ 1 - 025A8CE0643CFC0EB812BD3EB89F8F410D91EC3467CC6F371E7215F25F590B27 - 2422739525 - 6071 + 6189E343CCDAD18E707853FD4F4B1F4B15E650B8E0C73F2DAE25C866E4867828 + 532819485 + 6137 412 @@ -14158,7 +14158,7 @@ - -29 + -31 @@ -14182,7 +14182,7 @@ - -44 + -45 @@ -14238,7 +14238,7 @@ - -35 + -36 @@ -14266,7 +14266,7 @@ - -33 + -34 @@ -14290,7 +14290,7 @@ - -12 + -14 @@ -14318,7 +14318,7 @@ - -10 + -12 @@ -14342,7 +14342,7 @@ - -24 + -26 @@ -14370,7 +14370,7 @@ - -51 + -53 @@ -14422,7 +14422,7 @@ - -45 + -46 @@ -14446,7 +14446,7 @@ - -23 + -25 @@ -14502,7 +14502,7 @@ - -22 + -24 @@ -14550,7 +14550,7 @@ - -40 + -28 @@ -14574,7 +14574,7 @@ - -13 + -15 @@ -14626,7 +14626,7 @@ - -8 + -9 @@ -14658,7 +14658,7 @@ - -21 + -23 @@ -14690,7 +14690,7 @@ - -67 + -68 @@ -14714,7 +14714,7 @@ - -55 + -57 @@ -14742,7 +14742,7 @@ - -70 + -71 @@ -14774,7 +14774,7 @@ - -61 + -62 @@ -14798,7 +14798,7 @@ - -69 + -70 @@ -14822,7 +14822,7 @@ - -39 + -40 @@ -14846,7 +14846,7 @@ - -52 + -54 @@ -14874,7 +14874,7 @@ - -63 + -64 @@ -14902,7 +14902,7 @@ - -62 + -63 @@ -14930,7 +14930,7 @@ - -64 + -65 @@ -14958,7 +14958,7 @@ - -37 + -38 @@ -14990,7 +14990,7 @@ - -48 + -49 @@ -15014,7 +15014,7 @@ - -11 + -13 @@ -15038,7 +15038,7 @@ - -18 + -20 @@ -15062,7 +15062,7 @@ - -65 + -66 @@ -15090,7 +15090,7 @@ - -30 + -17 @@ -15114,7 +15114,7 @@ - -56 + -44 @@ -15142,7 +15142,7 @@ - -60 + -61 @@ -15170,7 +15170,7 @@ - -57 + -58 @@ -15194,7 +15194,7 @@ - -17 + -19 @@ -15218,7 +15218,7 @@ - -14 + -16 @@ -15264,20 +15264,11 @@ 0 - -8 + -9 type - - - 0 - - -10 - - - diagnostic_information free function - 0 @@ -15285,7 +15276,7 @@ -11 - + tutorial @@ -15294,7 +15285,7 @@ -12 - diagnostic_information tutorial + diagnostic_information free function @@ -15312,7 +15303,7 @@ -14 - noindex tutorial + diagnostic_information tutorial @@ -15321,7 +15312,7 @@ -15 - tutorial + @@ -15330,7 +15321,7 @@ -16 - + noindex tutorial @@ -15339,7 +15330,7 @@ -17 - noindex + type @@ -15350,6 +15341,15 @@ + + + 0 + + -19 + + + noindex + 0 @@ -15357,40 +15357,13 @@ -20 - exception_ptr free function - - - - 0 - - -21 - - - type - - - - 0 - - -22 - - - function - - - - 0 - - -25 - - 0 - -26 + -21 function member @@ -15399,7 +15372,16 @@ 0 - -30 + -22 + + + exception_ptr free function + + + + 0 + + -23 type @@ -15408,10 +15390,28 @@ 0 - -33 + -24 - type + function + + + + 0 + + -27 + + + + + + + 0 + + -28 + + + noalso noindex tutorial @@ -15420,7 +15420,7 @@ -34 - error_info free function + type @@ -15435,10 +15435,10 @@ 0 - -37 + -36 - type + error_info free function @@ -15447,7 +15447,7 @@ -38 - exception_ptr + type @@ -15456,7 +15456,7 @@ -39 - + exception_ptr @@ -15465,7 +15465,7 @@ -40 - noalso noindex tutorial + @@ -15501,7 +15501,7 @@ -44 - noalso noindex tutorial + tutorial @@ -15510,7 +15510,7 @@ -45 - type + noalso noindex tutorial @@ -15519,7 +15519,7 @@ -46 - + type @@ -15528,7 +15528,7 @@ -47 - type + @@ -15537,7 +15537,7 @@ -48 - function + type @@ -15546,7 +15546,7 @@ -49 - exception_ptr free function + function @@ -15555,7 +15555,7 @@ -50 - type + exception_ptr free function @@ -15573,7 +15573,7 @@ -52 - + type @@ -15582,7 +15582,7 @@ -53 - tutorial + type @@ -15591,7 +15591,7 @@ -54 - noindex + @@ -15600,7 +15600,7 @@ -55 - noalso noindex tutorial + tutorial @@ -15609,7 +15609,7 @@ -56 - tutorial + noindex @@ -15618,13 +15618,22 @@ -57 + noalso noindex tutorial + + + + 0 + + -58 + + error_info free function 0 - -60 + -61 @@ -15633,7 +15642,7 @@ 0 - -62 + -63 exception_ptr free function @@ -15642,7 +15651,7 @@ 0 - -63 + -64 function @@ -15651,7 +15660,7 @@ 0 - -64 + -65 error_info free function @@ -15660,7 +15669,7 @@ 0 - -65 + -66 macro @@ -15669,7 +15678,7 @@ 0 - -67 + -68 function member @@ -15678,7 +15687,7 @@ 0 - -68 + -69 exception_ptr type @@ -15687,7 +15696,7 @@ 0 - -69 + -70 error_info @@ -15696,20 +15705,11 @@ 0 - -70 + -71 free function - - - 0 - - -71 - - - type - 0 @@ -15717,7 +15717,7 @@ -72 - noindex tutorial + type @@ -15726,7 +15726,7 @@ -73 - type + noindex tutorial diff --git a/example/example_io.cpp b/example/example_io.cpp index 53d8b1d..ad11922 100644 --- a/example/example_io.cpp +++ b/example/example_io.cpp @@ -8,7 +8,10 @@ //The output from this program can vary depending on the platform. -#include +#include +#include +#include +#include #include #include #include @@ -16,11 +19,7 @@ #include #include #include -#include -#include -#include #include -#include typedef boost::error_info errinfo_src_file_name; typedef boost::error_info errinfo_dst_file_name;