diff --git a/doc/source/boost-exception.reno b/doc/source/boost-exception.reno
index 6c74e10..22aa9e7 100644
--- a/doc/source/boost-exception.reno
+++ b/doc/source/boost-exception.reno
@@ -48,6 +48,44 @@
reno_context
+
+
+
+
+ 1
+ 2
+ (:include include:)
(:auto also:)
+
+
+
+
+ 0
+
+ 6
+
+ reno_context
+
-
-
- 0
-
- 6
-
- reno_context
-
-
-
-
-
- 1
- 2
- (:include include:)
(:auto also:)
-
-
0
@@ -137,14 +137,14 @@
2
- 53604B11BCC14682BE0D096C301E75F6ADB11F25B737EC7B289C704948C5EBD4
- 2316087863
- 10702
- 927
+ DCF267834BA3C8D794197C42FED9E9CF842CC9C885EA6A3446DCD9B6D2A41B27
+ 313876374
+ 12619
+ 990
1760DA943E0DCAE6DDB000F3C08D6E6F5F8AEDBBEAC7CAA84A2ED60BFA4B0E1A
702729709
815
- 1691
+ 1915
@@ -409,9 +409,9 @@
1
- 552F4DC02251AF49BB74C51AF78D802A3C9AF424A7DDAE604606590D5215091B
- 2715606257
- 10615
+ 5300E66981754D841315F037D81144706BA87BCC073C99AD4218578E7403AFC7
+ 2917201631
+ 10700
527
@@ -685,6 +685,45 @@
":)
+
+
+ 0
+
+ -17
+
+
+
+ 1
+ 2
+ (:include include:)
(:auto also:)
+
+
+
+
+ 0
+
+ -18
+
+
+
+ 1
+ 2
+ (:include include:)
(:auto also:)
+
+
+
+
+ 0
+
+ -19
+
+
+
+ 1
+ 2
+ (:include include:)
(:auto also:)
+
+
0
@@ -793,9 +832,9 @@
2
- 1F31A95EAA7F2399BFEA107FAA0BC1E0442C959F885AE1727DBACBF9CD23D58D
- 3972023049
- 5145
+ 0C7A7C7F25A79E2E5DA99A5B843BB85FD3104073D8F8A760C9FCC03AE335C570
+ 3915725772
+ 5126
751
6E325144EF4F41FA3A225EB30729101382C4E99B3D6160E307311E4B4E641010
1097215175
@@ -842,14 +881,14 @@
3
- 552F4DC02251AF49BB74C51AF78D802A3C9AF424A7DDAE604606590D5215091B
- 2715606257
- 10615
+ 5300E66981754D841315F037D81144706BA87BCC073C99AD4218578E7403AFC7
+ 2917201631
+ 10700
527
- 28ACC7E8903AFA473B656DAD74C22C3F675AFCCA871D81AB3AB7742FDF5F1E48
- 2824899226
- 2163
- 4157
+ A6740105162632170E5CDF9C35CEBDDFE0127CE2B56AD6F7D9C94492D71B94C0
+ 1007330324
+ 2246
+ 4159
DA154372D8C23BD9EDC30005CA7959CE686D198891097A837D006B5222F04DE9
2768248809
143
@@ -895,14 +934,14 @@
2
- 552F4DC02251AF49BB74C51AF78D802A3C9AF424A7DDAE604606590D5215091B
- 2715606257
- 10615
+ 5300E66981754D841315F037D81144706BA87BCC073C99AD4218578E7403AFC7
+ 2917201631
+ 10700
527
- 28ACC7E8903AFA473B656DAD74C22C3F675AFCCA871D81AB3AB7742FDF5F1E48
- 2824899226
- 2163
- 4157
+ A6740105162632170E5CDF9C35CEBDDFE0127CE2B56AD6F7D9C94492D71B94C0
+ 1007330324
+ 2246
+ 4159
@@ -944,9 +983,9 @@
1
- BE689D9934C57D4C677241D1A0BD64D7BB3B078615FB73C811A16DCDEDED9A24
- 1976211861
- 11408
+ 584388A41CE72044D529DE67388F723963DB052D8D84421786BE0210B300994B
+ 3946405561
+ 13388
321
@@ -989,10 +1028,10 @@
2
- 53604B11BCC14682BE0D096C301E75F6ADB11F25B737EC7B289C704948C5EBD4
- 2316087863
- 10702
- 927
+ DCF267834BA3C8D794197C42FED9E9CF842CC9C885EA6A3446DCD9B6D2A41B27
+ 313876374
+ 12619
+ 990
1516D0B7E11CBEB60CE4222565ACCAFF2E9857A8A505C1C26E2AE90087250581
3624753243
279
@@ -1024,19 +1063,6 @@
(:include include:)
(:auto also:)
-
-
- 0
-
- -19
-
-
-
- 1
- 2
- (:include include:)
(:auto also:)
-
-
0
@@ -1089,14 +1115,14 @@
2
- 552F4DC02251AF49BB74C51AF78D802A3C9AF424A7DDAE604606590D5215091B
- 2715606257
- 10615
+ 5300E66981754D841315F037D81144706BA87BCC073C99AD4218578E7403AFC7
+ 2917201631
+ 10700
527
DF9EA87B0140AACF4422F1B76F6A6A409C15F32858BBBA85A35981A824C56BA9
1137981799
192
- 10417
+ 10502
@@ -1394,14 +1420,14 @@
2
- 53604B11BCC14682BE0D096C301E75F6ADB11F25B737EC7B289C704948C5EBD4
- 2316087863
- 10702
- 927
- B1E95870ED1A10E091EEF1431E5A1085588DEDD2A21A62AB1B3A9B6D673D316C
- 2683773289
- 7174
- 2508
+ DCF267834BA3C8D794197C42FED9E9CF842CC9C885EA6A3446DCD9B6D2A41B27
+ 313876374
+ 12619
+ 990
+ 2D7AE87BCBA98F0E1B6CD66090841397F3F6E386728D3CE8BEC64CC4CFE03E52
+ 3586974389
+ 8253
+ 2732
@@ -1443,14 +1469,14 @@
2
- 552F4DC02251AF49BB74C51AF78D802A3C9AF424A7DDAE604606590D5215091B
- 2715606257
- 10615
+ 5300E66981754D841315F037D81144706BA87BCC073C99AD4218578E7403AFC7
+ 2917201631
+ 10700
527
F3FB15CD82336271C6E875BC620385322777D16F0B7C233300783CE35710CCBF
3292878997
282
- 8425
+ 8510
@@ -1762,10 +1788,10 @@
2
- 53604B11BCC14682BE0D096C301E75F6ADB11F25B737EC7B289C704948C5EBD4
- 2316087863
- 10702
- 927
+ DCF267834BA3C8D794197C42FED9E9CF842CC9C885EA6A3446DCD9B6D2A41B27
+ 313876374
+ 12619
+ 990
0066D4E6E6B189906E6DE04F08509F3737511701A1B1355B37511EC18E8371F4
2078296250
305
@@ -2172,18 +2198,18 @@
3
- 1F31A95EAA7F2399BFEA107FAA0BC1E0442C959F885AE1727DBACBF9CD23D58D
- 3972023049
- 5145
+ 0C7A7C7F25A79E2E5DA99A5B843BB85FD3104073D8F8A760C9FCC03AE335C570
+ 3915725772
+ 5126
751
- 108E2EEB3ED55334F011F4675B6B942EB7DE80F0912801DA77E69695D85AAB21
- 2340222085
- 3982
+ C10F1E8E6D5006CC606914ADF3B32784415142ACF9ABF441AEEFF22FEDFD7E5B
+ 3971804488
+ 3963
884
38AA79D330846BE1CF17285796F34A9DBB5A7E995963A55F9B46EB1DA6314610
542483318
573
- 3194
+ 3175
@@ -2323,10 +2349,10 @@
2
- 53604B11BCC14682BE0D096C301E75F6ADB11F25B737EC7B289C704948C5EBD4
- 2316087863
- 10702
- 927
+ DCF267834BA3C8D794197C42FED9E9CF842CC9C885EA6A3446DCD9B6D2A41B27
+ 313876374
+ 12619
+ 990
44A436E88E9302D907AF1F343063D988F0F87C863E372EA97378835C64480093
308353940
75
@@ -2611,10 +2637,10 @@
1
- 8E3F78DE263B935C4CFB99352CB54A6B564339C95624E56461691E5122124572
- 3927310792
- 2556
- 91
+ 167C4E3E81D972BC6C9BA70FA5B9289A26B0D36A711F3769674381E8D410A7F6
+ 3567454851
+ 2594
+ 89
@@ -2705,9 +2731,9 @@
1
- F52E095C554D64C03B4DC34F7E19361B35607AA1F7E30DA74FFB34EB920D2138
- 1407053531
- 5675
+ C6E364609371DC5693CCB1B8CA6C6274CD24019026B9932FF566CFC53B441BB4
+ 4056606622
+ 5656
321
@@ -2938,14 +2964,14 @@
2
- 552F4DC02251AF49BB74C51AF78D802A3C9AF424A7DDAE604606590D5215091B
- 2715606257
- 10615
+ 5300E66981754D841315F037D81144706BA87BCC073C99AD4218578E7403AFC7
+ 2917201631
+ 10700
527
17E691632123EB67BA67D590B49EB8094F462F5A10A66A1C5438E1867EF1478E
765399792
77
- 6322
+ 6407
@@ -3063,13 +3089,13 @@
2
- C7821563D080F4729635176A6A603EA3BCFE91BB383CB3EF1FA2255AA9D00596
- 3824049979
- 1210
+ FD7792C2929DD7B6BD613636FD0C574D002286E33811BA109B57B9C4D790D340
+ 1830643656
+ 1244
1417
- D3B2AFDC122AFD17CE49E26E879278AAE0E06939CF4A1DAAD5260B47A0A9F99A
- 630937601
- 1188
+ BAE73EEDFF4059A7561888B4BA054DFA033F0967727630270F2C0D4EB918B88D
+ 3168166030
+ 1222
21
@@ -3282,14 +3308,14 @@
2
- 53604B11BCC14682BE0D096C301E75F6ADB11F25B737EC7B289C704948C5EBD4
- 2316087863
- 10702
- 927
+ DCF267834BA3C8D794197C42FED9E9CF842CC9C885EA6A3446DCD9B6D2A41B27
+ 313876374
+ 12619
+ 990
F65C82C62C1EEA672C42FE46189491942DE15B2F8C998E7CAE49588C7D8CBFFA
1041900763
143
- 9684
+ 11601
@@ -3355,19 +3381,6 @@
(:include include:)
(:auto also:)
-
-
- 0
-
- -18
-
-
-
- 1
- 2
- (:include include:)
(:auto also:)
-
-
0
@@ -3499,19 +3512,6 @@
0
-
-
- 0
-
- -17
-
-
-
- 1
- 2
- (:include include:)
(:auto also:)
-
-
@@ -3698,6 +3698,39 @@
0
+
+
+ 0
+
+ -17
+
+
+
+ 0
+
+
+
+
+ 0
+
+ -18
+
+
+
+ 0
+
+
+
+
+ 0
+
+ -19
+
+
+
+ 0
+
+
0
@@ -3804,17 +3837,6 @@
0
-
-
- 0
-
- -19
-
-
-
- 0
-
-
0
@@ -4543,17 +4565,6 @@
0
-
-
- 0
-
- -18
-
-
-
- 0
-
-
0
@@ -4587,17 +4598,6 @@
0
-
-
- 0
-
- -17
-
-
-
- 0
-
-
@@ -4619,6 +4619,17 @@
-5
+
+ 0
+
+
+
+
+ 0
+
+ -6
+
+
3
2
@@ -4634,17 +4645,6 @@
def:)@]
-
-
- 0
-
- -6
-
-
-
- 0
-
-
0
@@ -4824,6 +4824,39 @@
0
+
+
+ 0
+
+ -17
+
+
+
+ 0
+
+
+
+
+ 0
+
+ -18
+
+
+
+ 0
+
+
+
+
+ 0
+
+ -19
+
+
+
+ 0
+
+
0
@@ -4968,17 +5001,6 @@
0
-
-
- 0
-
- -19
-
-
-
- 0
-
-
0
@@ -5247,7 +5269,7 @@
0
- -5
+ -6
2
@@ -5836,17 +5858,6 @@
0
-
-
- 0
-
- -18
-
-
-
- 0
-
-
0
@@ -5909,17 +5920,6 @@
0
-
-
- 0
-
- -17
-
-
-
- 0
-
-
@@ -6108,6 +6108,39 @@
0
+
+
+ 0
+
+ -17
+
+
+
+ 0
+
+
+
+
+ 0
+
+ -18
+
+
+
+ 0
+
+
+
+
+ 0
+
+ -19
+
+
+
+ 0
+
+
0
@@ -6276,17 +6309,6 @@
;@]
-
-
- 0
-
- -19
-
-
-
- 0
-
-
0
@@ -7204,17 +7226,6 @@
0
-
-
- 0
-
- -18
-
-
-
- 0
-
-
0
@@ -7248,17 +7259,6 @@
0
-
-
- 0
-
- -17
-
-
-
- 0
-
-
@@ -7283,7 +7283,7 @@
1
2
- (:auto !!:)
!!!Synopsis
(:include synopsis:)
+ (:auto !!:)
(:pagelist fmt="index" tags="function":)
@@ -7296,7 +7296,7 @@
1
2
- (:auto !!:)
(:pagelist fmt="index" tags="function":)
+ (:auto !!:)
!!!Synopsis
(:include synopsis:)
@@ -7739,61 +7739,13 @@
0
- -20
-
-
-
- 1
- 2
- (:auto !!!:)
(:include synopsis:)
!!!!Requirements:
This function must not be called outside of a catch block.
!!!!Returns:
A pointer of type E to the current exception object, or null if the current exception object can not be converted to E *.
!!!!Throws:
Nothing.
-
-
-
-
- 0
-
- -21
-
-
-
- 1
- 2
- (:auto !!:)
!!!Synopsis
(:include synopsis:)
-
-
-
-
- 0
-
- -22
-
-
-
- 3
- 2
- (:auto !!!:)
(:include synopsis:)
!!!!Effects:
Stores a copy of v in the
- 1
-
- 0
-
- -59
-
-
- 2
- object.
(:include throws:)
-
-
-
-
- 0
-
- -23
+ -17
7
2
- (:auto !!!:)
(:include decl:)
!!!!Effects:
* Default constructor: initializes an empty boost::(:link
+ (:auto !!!:)
Deriving from boost::(:link
1
0
@@ -7802,7 +7754,7 @@
2
- :) object.
* Copy constructor: initializes a boost::(:link
+ :) effectively decouples the semantics of a failure from the information that is relevant to each individual instance of reporting a failure with a given semantic.
In other words: with boost::(:link
1
0
@@ -7811,29 +7763,29 @@
2
- :) object which shares ownership with x of all data added through (:link
+ :), what data a given exception object transports depends primarily on the context in which failures are reported (not on its type.) Since exception types need no members, it becomes very natural to throw exceptions that derive from more than one type to indicate multiple appropriate semantics:
[@struct exception_base: virtual std::exception, virtual boost::(:link
1
0
- -52
+ -24
2
- mod="/":), including data that is added at a future time.
!!!!Throws:
Nothing.
+ :) { };
struct io_error: virtual exception_base { };
struct file_error: virtual io_error { };
struct read_error: virtual io_error { };
struct file_read_error: virtual file_error, virtual read_error { };@]
Using this approach, exception types become a simple tagging system for categorizing errors and selecting failures in exception handlers.
0
- -24
+ -18
- 13
+ 27
2
- (:auto !!!:)
(:include synopsis:)
Class boost::(:link
+ (:auto !!:)
Some exception hierarchies can not be modified to make boost::(:link
1
0
@@ -7842,7 +7794,16 @@
2
- :) is designed to be used as a universal base for user-defined exception types.
An object of any type deriving from boost::(:link
+ :) a base type. In this case, the (:link
+ 1
+
+ 0
+
+ -36
+
+
+ 2
+ :) function template can be used to make exception objects derive from boost::(:link
1
0
@@ -7851,7 +7812,16 @@
2
- :) can store data of arbitrary types, using the (:link
+ :) anyway. Here is an example:
[@#include <(:link
+ 1
+
+ 0
+
+ -39
+
+
+ 2
+ :)>
#include <stdexcept>
typedef boost::(:link
1
0
@@ -7860,60 +7830,7 @@
2
- :) wrapper and (:link
- 1
-
- 0
-
- -52
-
-
- 2
- mod="/":).
To retrieve data from a boost::(:link
- 1
-
- 0
-
- -24
-
-
- 2
- :) object, use the (:link
- 1
-
- 0
-
- -54
-
-
- 2
- :) function template.
-
-
-
-
- 0
-
- -25
-
-
-
- 1
- 2
- (:auto !!:)
!!!Synopsis
(:include synopsis:)
-
-
-
-
- 0
-
- -26
-
-
-
- 9
- 2
- (:auto !!!:)
(:include synopsis:)
This
+ :)<struct tag_std_range_min,size_t> std_range_min;
typedef boost::(:link
1
0
@@ -7922,34 +7839,70 @@
2
- typedef is used by
+ :)<struct tag_std_range_max,size_t> std_range_max;
typedef boost::(:link
1
0
- -35
+ -59
2
- if it defaults to returning an
+ :)<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
- -55
+ -36
2
- that refers to an object of type
+ :)(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
- -7
+ -36
2
- , to record in it the std::type_info of the original exception object.
+ :)<T> gets us an object of ''unspecified type'' which is guaranteed to derive from both boost::(:link
+ 1
+
+ 0
+
+ -24
+
+
+ 2
+ :) and T. This makes it possible to use (:link
+ 1
+
+ 0
+
+ -52
+
+
+ 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
+
+ -24
+
+
+ 2
+ :) &, so that (:link
+ 1
+
+ 0
+
+ -12
+
+
+ 2
+ |more information can be added to the exception at a later time:).
@@ -8316,6 +8269,223 @@
:) 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
+
+ -20
+
+
+
+ 1
+ 2
+ (:auto !!!:)
(:include synopsis:)
!!!!Requirements:
This function must not be called outside of a catch block.
!!!!Returns:
A pointer of type E to the current exception object, or null if the current exception object can not be converted to E *.
!!!!Throws:
Nothing.
+
+
+
+
+ 0
+
+ -21
+
+
+
+ 1
+ 2
+ (:auto !!:)
!!!Synopsis
(:include synopsis:)
+
+
+
+
+ 0
+
+ -22
+
+
+
+ 3
+ 2
+ (:auto !!!:)
(:include synopsis:)
!!!!Effects:
Stores a copy of v in the
+ 1
+
+ 0
+
+ -59
+
+
+ 2
+ object.
(:include throws:)
+
+
+
+
+ 0
+
+ -23
+
+
+
+ 7
+ 2
+ (:auto !!!:)
(:include decl:)
!!!!Effects:
* Default constructor: initializes an empty boost::(:link
+ 1
+
+ 0
+
+ -24
+
+
+ 2
+ :) object.
* Copy constructor: initializes a boost::(:link
+ 1
+
+ 0
+
+ -24
+
+
+ 2
+ :) object which shares ownership with x of all data added through (:link
+ 1
+
+ 0
+
+ -52
+
+
+ 2
+ mod="/":), including data that is added at a future time.
!!!!Throws:
Nothing.
+
+
+
+
+ 0
+
+ -24
+
+
+
+ 13
+ 2
+ (:auto !!!:)
(:include synopsis:)
Class boost::(:link
+ 1
+
+ 0
+
+ -24
+
+
+ 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
+
+ -24
+
+
+ 2
+ :) can store data of arbitrary types, using the (:link
+ 1
+
+ 0
+
+ -59
+
+
+ 2
+ :) wrapper and (:link
+ 1
+
+ 0
+
+ -52
+
+
+ 2
+ mod="/":).
To retrieve data from a boost::(:link
+ 1
+
+ 0
+
+ -24
+
+
+ 2
+ :) object, use the (:link
+ 1
+
+ 0
+
+ -54
+
+
+ 2
+ :) function template.
+
+
+
+
+ 0
+
+ -25
+
+
+
+ 1
+ 2
+ (:auto !!:)
!!!Synopsis
(:include synopsis:)
+
+
+
+
+ 0
+
+ -26
+
+
+
+ 9
+ 2
+ (:auto !!!:)
(:include synopsis:)
This
+ 1
+
+ 0
+
+ -59
+
+
+ 2
+ typedef is used by
+ 1
+
+ 0
+
+ -35
+
+
+ 2
+ if it defaults to returning an
+ 1
+
+ 0
+
+ -55
+
+
+ 2
+ that refers to an object of type
+ 1
+
+ 0
+
+ -7
+
+
+ 2
+ , to record in it the std::type_info of the original exception object.
+
+
0
@@ -9328,7 +9498,7 @@
0
- -5
+ -6
2
@@ -10743,7 +10913,7 @@
0
- -6
+ -5
2
@@ -11246,7 +11416,7 @@
0
- -5
+ -6
2
@@ -11255,7 +11425,7 @@
0
- -5
+ -6
2
@@ -11454,136 +11624,6 @@
mod="w":).
-
-
- 0
-
- -18
-
-
-
- 27
- 2
- (:auto !!:)
Some exception hierarchies can not be modified to make boost::(:link
- 1
-
- 0
-
- -24
-
-
- 2
- :) a base type. In this case, the (:link
- 1
-
- 0
-
- -36
-
-
- 2
- :) function template can be used to make exception objects derive from boost::(:link
- 1
-
- 0
-
- -24
-
-
- 2
- :) anyway. Here is an example:
[@#include <(:link
- 1
-
- 0
-
- -39
-
-
- 2
- :)>
#include <stdexcept>
typedef boost::(:link
- 1
-
- 0
-
- -59
-
-
- 2
- :)<struct tag_std_range_min,size_t> std_range_min;
typedef boost::(:link
- 1
-
- 0
-
- -59
-
-
- 2
- :)<struct tag_std_range_max,size_t> std_range_max;
typedef boost::(:link
- 1
-
- 0
-
- -59
-
-
- 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
-
- -36
-
-
- 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
-
- -36
-
-
- 2
- :)<T> gets us an object of ''unspecified type'' which is guaranteed to derive from both boost::(:link
- 1
-
- 0
-
- -24
-
-
- 2
- :) and T. This makes it possible to use (:link
- 1
-
- 0
-
- -52
-
-
- 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
-
- -24
-
-
- 2
- :) &, so that (:link
- 1
-
- 0
-
- -12
-
-
- 2
- |more information can be added to the exception at a later time:).
-
-
0
@@ -11848,46 +11888,6 @@
:) in the above examples is well-formed.
-
-
- 0
-
- -17
-
-
-
- 7
- 2
- (:auto !!!:)
Deriving from boost::(:link
- 1
-
- 0
-
- -24
-
-
- 2
- :) effectively decouples the semantics of a failure from the information that is relevant to each individual instance of reporting a failure with a given semantic.
In other words: with boost::(:link
- 1
-
- 0
-
- -24
-
-
- 2
- :), what data a given exception object transports depends primarily on the context in which failures are reported (not on its type.) Since exception types need no members, it becomes very natural to throw exceptions that derive from more than one type to indicate multiple appropriate semantics:
[@struct exception_base: virtual std::exception, virtual boost::(:link
- 1
-
- 0
-
- -24
-
-
- 2
- :) { };
struct io_error: virtual exception_base { };
struct file_error: virtual io_error { };
struct read_error: virtual io_error { };
struct file_read_error: virtual file_error, virtual read_error { };@]
Using this approach, exception types become a simple tagging system for categorizing errors and selecting failures in exception handlers.
-
-
@@ -12034,6 +12034,39 @@
0
+
+
+ 0
+
+ -17
+
+
+
+ 0
+
+
+
+
+ 0
+
+ -18
+
+
+
+ 0
+
+
+
+
+ 0
+
+ -19
+
+
+
+ 0
+
+
0
@@ -12113,17 +12146,6 @@
0
-
-
- 0
-
- -19
-
-
-
- 0
-
-
0
@@ -12689,17 +12711,6 @@
0
-
-
- 0
-
- -18
-
-
-
- 0
-
-
0
@@ -12733,17 +12744,6 @@
0
-
-
- 0
-
- -17
-
-
-
- 0
-
-
@@ -12765,6 +12765,17 @@
-5
+
+ 0
+
+
+
+
+ 0
+
+ -6
+
+
3
2
@@ -12780,17 +12791,6 @@
>
#include <string>
namespace
boost
{
(:include api pre_indent="4":)
}@]
-
-
- 0
-
- -6
-
-
-
- 0
-
-
0
@@ -12998,6 +12998,39 @@
0
+
+
+ 0
+
+ -17
+
+
+
+ 0
+
+
+
+
+ 0
+
+ -18
+
+
+
+ 0
+
+
+
+
+ 0
+
+ -19
+
+
+
+ 0
+
+
0
@@ -13150,17 +13183,6 @@
>
[@namespace
boost
{
(:include decl pre_indent="4":)
}@]
-
-
- 0
-
- -19
-
-
-
- 0
-
-
0
@@ -13697,7 +13719,7 @@
0
- -5
+ -6
2
@@ -13706,7 +13728,7 @@
0
- -5
+ -6
2
@@ -14114,17 +14136,6 @@
0
-
-
- 0
-
- -18
-
-
-
- 0
-
-
0
@@ -14169,17 +14180,6 @@
0
-
-
- 0
-
- -17
-
-
-
- 0
-
-
@@ -14234,6 +14234,15 @@
-16
+
+ -17
+
+
+ -18
+
+
+ -19
+
-20
@@ -14255,9 +14264,6 @@
-26
-
- -19
-
-27
@@ -14411,9 +14417,6 @@
-77
-
- -18
-
-78
@@ -14423,9 +14426,6 @@
-80
-
- -17
-
@@ -14615,7 +14615,7 @@
- -6
+ -5
@@ -14786,174 +14786,6 @@
-80
-
-
-
-
- 1
- 552F4DC02251AF49BB74C51AF78D802A3C9AF424A7DDAE604606590D5215091B
- 2715606257
- 10615
- 527
-
-
-
-
-
- 0
- ../../../../boost/exception/exception.hpp
- 0
- 0
-
-
-
- -13
-
-
-
-
-
-
- 2
- 552F4DC02251AF49BB74C51AF78D802A3C9AF424A7DDAE604606590D5215091B
- 2715606257
- 10615
- 527
- 28ACC7E8903AFA473B656DAD74C22C3F675AFCCA871D81AB3AB7742FDF5F1E48
- 2824899226
- 2163
- 4157
-
-
-
-
-
- 0
- ../../../../boost/exception/exception.hpp
- 0
- 0
-
-
-
- -24
-
-
-
-
-
-
- 3
- 552F4DC02251AF49BB74C51AF78D802A3C9AF424A7DDAE604606590D5215091B
- 2715606257
- 10615
- 527
- 28ACC7E8903AFA473B656DAD74C22C3F675AFCCA871D81AB3AB7742FDF5F1E48
- 2824899226
- 2163
- 4157
- DA154372D8C23BD9EDC30005CA7959CE686D198891097A837D006B5222F04DE9
- 2768248809
- 143
- 60
-
-
-
-
-
- 0
- ../../../../boost/exception/exception.hpp
- 0
- 0
-
-
-
- -23
-
-
-
-
-
-
- 2
- 552F4DC02251AF49BB74C51AF78D802A3C9AF424A7DDAE604606590D5215091B
- 2715606257
- 10615
- 527
- 17E691632123EB67BA67D590B49EB8094F462F5A10A66A1C5438E1867EF1478E
- 765399792
- 77
- 6322
-
-
-
-
-
- 0
- ../../../../boost/exception/exception.hpp
- 0
- 0
-
-
-
- -68
-
-
-
-
-
-
- 2
- 552F4DC02251AF49BB74C51AF78D802A3C9AF424A7DDAE604606590D5215091B
- 2715606257
- 10615
- 527
- DF9EA87B0140AACF4422F1B76F6A6A409C15F32858BBBA85A35981A824C56BA9
- 1137981799
- 192
- 10417
-
-
-
-
-
- 0
- ../../../../boost/exception/exception.hpp
- 0
- 0
-
-
-
- -28
-
-
-
-
-
-
- 2
- 552F4DC02251AF49BB74C51AF78D802A3C9AF424A7DDAE604606590D5215091B
- 2715606257
- 10615
- 527
- F3FB15CD82336271C6E875BC620385322777D16F0B7C233300783CE35710CCBF
- 3292878997
- 282
- 8425
-
-
-
-
-
- 0
- ../../../../boost/exception/exception.hpp
- 0
- 0
-
-
-
- -36
-
-
@@ -15010,11 +14842,15 @@
- 1
- BE689D9934C57D4C677241D1A0BD64D7BB3B078615FB73C811A16DCDEDED9A24
- 1976211861
- 11408
- 321
+ 2
+ DCF267834BA3C8D794197C42FED9E9CF842CC9C885EA6A3446DCD9B6D2A41B27
+ 313876374
+ 12619
+ 990
+ 1760DA943E0DCAE6DDB000F3C08D6E6F5F8AEDBBEAC7CAA84A2ED60BFA4B0E1A
+ 702729709
+ 815
+ 1915
@@ -15027,7 +14863,147 @@
- -25
+ -7
+
+
+
+
+
+
+ 2
+ DCF267834BA3C8D794197C42FED9E9CF842CC9C885EA6A3446DCD9B6D2A41B27
+ 313876374
+ 12619
+ 990
+ 2D7AE87BCBA98F0E1B6CD66090841397F3F6E386728D3CE8BEC64CC4CFE03E52
+ 3586974389
+ 8253
+ 2732
+
+
+
+
+
+ 0
+ ../../../../boost/exception/detail/exception_ptr.hpp
+ 0
+ 0
+
+
+
+ -35
+
+
+
+
+
+
+ 2
+ DCF267834BA3C8D794197C42FED9E9CF842CC9C885EA6A3446DCD9B6D2A41B27
+ 313876374
+ 12619
+ 990
+ 1516D0B7E11CBEB60CE4222565ACCAFF2E9857A8A505C1C26E2AE90087250581
+ 3624753243
+ 279
+ 452
+
+
+
+
+
+ 0
+ ../../../../boost/exception/detail/exception_ptr.hpp
+ 0
+ 0
+
+
+
+ -26
+
+
+
+
+
+
+ 2
+ DCF267834BA3C8D794197C42FED9E9CF842CC9C885EA6A3446DCD9B6D2A41B27
+ 313876374
+ 12619
+ 990
+ 44A436E88E9302D907AF1F343063D988F0F87C863E372EA97378835C64480093
+ 308353940
+ 75
+ 26
+
+
+
+
+
+ 0
+ ../../../../boost/exception/detail/exception_ptr.hpp
+ 0
+ 0
+
+
+
+ -55
+
+
+
+
+
+
+ 2
+ DCF267834BA3C8D794197C42FED9E9CF842CC9C885EA6A3446DCD9B6D2A41B27
+ 313876374
+ 12619
+ 990
+ 0066D4E6E6B189906E6DE04F08509F3737511701A1B1355B37511EC18E8371F4
+ 2078296250
+ 305
+ 145
+
+
+
+
+
+ 0
+ ../../../../boost/exception/detail/exception_ptr.hpp
+ 0
+ 0
+
+
+
+ -43
+
+
+
+
+
+
+ 2
+ DCF267834BA3C8D794197C42FED9E9CF842CC9C885EA6A3446DCD9B6D2A41B27
+ 313876374
+ 12619
+ 990
+ F65C82C62C1EEA672C42FE46189491942DE15B2F8C998E7CAE49588C7D8CBFFA
+ 1041900763
+ 143
+ 11601
+
+
+
+
+
+ 0
+ ../../../../boost/exception/detail/exception_ptr.hpp
+ 0
+ 0
+
+
+
+ -76
@@ -15134,30 +15110,6 @@
-39
-
-
-
-
- 1
- F52E095C554D64C03B4DC34F7E19361B35607AA1F7E30DA74FFB34EB920D2138
- 1407053531
- 5675
- 321
-
-
-
-
-
- 0
- ../../../../boost/exception/info.hpp
- 0
- 0
-
-
-
- -63
-
-
@@ -15210,6 +15162,58 @@
-31
+
+
+
+
+ 2
+ FD7792C2929DD7B6BD613636FD0C574D002286E33811BA109B57B9C4D790D340
+ 1830643656
+ 1244
+ 1417
+ BAE73EEDFF4059A7561888B4BA054DFA033F0967727630270F2C0D4EB918B88D
+ 3168166030
+ 1222
+ 21
+
+
+
+
+
+ 0
+ ../../../../boost/throw_exception.hpp
+ 0
+ 0
+
+
+
+ -71
+
+
+
+
+
+
+ 1
+ 584388A41CE72044D529DE67388F723963DB052D8D84421786BE0210B300994B
+ 3946405561
+ 13388
+ 321
+
+
+
+
+
+ 0
+ ../../../../boost/exception/detail/exception_ptr.hpp
+ 0
+ 0
+
+
+
+ -25
+
+
@@ -15390,6 +15394,66 @@
-45
+
+
+
+
+ 2
+ 0C7A7C7F25A79E2E5DA99A5B843BB85FD3104073D8F8A760C9FCC03AE335C570
+ 3915725772
+ 5126
+ 751
+ 6E325144EF4F41FA3A225EB30729101382C4E99B3D6160E307311E4B4E641010
+ 1097215175
+ 161
+ 240
+
+
+
+
+
+ 0
+ ../../../../boost/exception/info.hpp
+ 0
+ 0
+
+
+
+ -22
+
+
+
+
+
+
+ 3
+ 0C7A7C7F25A79E2E5DA99A5B843BB85FD3104073D8F8A760C9FCC03AE335C570
+ 3915725772
+ 5126
+ 751
+ C10F1E8E6D5006CC606914ADF3B32784415142ACF9ABF441AEEFF22FEDFD7E5B
+ 3971804488
+ 3963
+ 884
+ 38AA79D330846BE1CF17285796F34A9DBB5A7E995963A55F9B46EB1DA6314610
+ 542483318
+ 573
+ 3175
+
+
+
+
+
+ 0
+ ../../../../boost/exception/info.hpp
+ 0
+ 0
+
+
+
+ -52
+
+
@@ -15442,30 +15506,6 @@
-53
-
-
-
-
- 1
- 8E3F78DE263B935C4CFB99352CB54A6B564339C95624E56461691E5122124572
- 3927310792
- 2556
- 91
-
-
-
-
-
- 0
- ../../../../boost/throw_exception.hpp
- 0
- 0
-
-
-
- -61
-
-
@@ -15566,66 +15606,6 @@
-44
-
-
-
-
- 2
- 1F31A95EAA7F2399BFEA107FAA0BC1E0442C959F885AE1727DBACBF9CD23D58D
- 3972023049
- 5145
- 751
- 6E325144EF4F41FA3A225EB30729101382C4E99B3D6160E307311E4B4E641010
- 1097215175
- 161
- 240
-
-
-
-
-
- 0
- ../../../../boost/exception/info.hpp
- 0
- 0
-
-
-
- -22
-
-
-
-
-
-
- 3
- 1F31A95EAA7F2399BFEA107FAA0BC1E0442C959F885AE1727DBACBF9CD23D58D
- 3972023049
- 5145
- 751
- 108E2EEB3ED55334F011F4675B6B942EB7DE80F0912801DA77E69695D85AAB21
- 2340222085
- 3982
- 884
- 38AA79D330846BE1CF17285796F34A9DBB5A7E995963A55F9B46EB1DA6314610
- 542483318
- 573
- 3194
-
-
-
-
-
- 0
- ../../../../boost/exception/info.hpp
- 0
- 0
-
-
-
- -52
-
-
@@ -15650,34 +15630,6 @@
-75
-
-
-
-
- 2
- C7821563D080F4729635176A6A603EA3BCFE91BB383CB3EF1FA2255AA9D00596
- 3824049979
- 1210
- 1417
- D3B2AFDC122AFD17CE49E26E879278AAE0E06939CF4A1DAAD5260B47A0A9F99A
- 630937601
- 1188
- 21
-
-
-
-
-
- 0
- ../../../../boost/throw_exception.hpp
- 0
- 0
-
-
-
- -71
-
-
@@ -15727,7 +15679,7 @@
- -5
+ -6
@@ -15942,6 +15894,30 @@
-37
+
+
+
+
+ 1
+ C6E364609371DC5693CCB1B8CA6C6274CD24019026B9932FF566CFC53B441BB4
+ 4056606622
+ 5656
+ 321
+
+
+
+
+
+ 0
+ ../../../../boost/exception/info.hpp
+ 0
+ 0
+
+
+
+ -63
+
+
@@ -15966,6 +15942,174 @@
-67
+
+
+
+
+ 1
+ 5300E66981754D841315F037D81144706BA87BCC073C99AD4218578E7403AFC7
+ 2917201631
+ 10700
+ 527
+
+
+
+
+
+ 0
+ ../../../../boost/exception/exception.hpp
+ 0
+ 0
+
+
+
+ -13
+
+
+
+
+
+
+ 2
+ 5300E66981754D841315F037D81144706BA87BCC073C99AD4218578E7403AFC7
+ 2917201631
+ 10700
+ 527
+ 17E691632123EB67BA67D590B49EB8094F462F5A10A66A1C5438E1867EF1478E
+ 765399792
+ 77
+ 6407
+
+
+
+
+
+ 0
+ ../../../../boost/exception/exception.hpp
+ 0
+ 0
+
+
+
+ -68
+
+
+
+
+
+
+ 2
+ 5300E66981754D841315F037D81144706BA87BCC073C99AD4218578E7403AFC7
+ 2917201631
+ 10700
+ 527
+ DF9EA87B0140AACF4422F1B76F6A6A409C15F32858BBBA85A35981A824C56BA9
+ 1137981799
+ 192
+ 10502
+
+
+
+
+
+ 0
+ ../../../../boost/exception/exception.hpp
+ 0
+ 0
+
+
+
+ -28
+
+
+
+
+
+
+ 2
+ 5300E66981754D841315F037D81144706BA87BCC073C99AD4218578E7403AFC7
+ 2917201631
+ 10700
+ 527
+ F3FB15CD82336271C6E875BC620385322777D16F0B7C233300783CE35710CCBF
+ 3292878997
+ 282
+ 8510
+
+
+
+
+
+ 0
+ ../../../../boost/exception/exception.hpp
+ 0
+ 0
+
+
+
+ -36
+
+
+
+
+
+
+ 2
+ 5300E66981754D841315F037D81144706BA87BCC073C99AD4218578E7403AFC7
+ 2917201631
+ 10700
+ 527
+ A6740105162632170E5CDF9C35CEBDDFE0127CE2B56AD6F7D9C94492D71B94C0
+ 1007330324
+ 2246
+ 4159
+
+
+
+
+
+ 0
+ ../../../../boost/exception/exception.hpp
+ 0
+ 0
+
+
+
+ -24
+
+
+
+
+
+
+ 3
+ 5300E66981754D841315F037D81144706BA87BCC073C99AD4218578E7403AFC7
+ 2917201631
+ 10700
+ 527
+ A6740105162632170E5CDF9C35CEBDDFE0127CE2B56AD6F7D9C94492D71B94C0
+ 1007330324
+ 2246
+ 4159
+ DA154372D8C23BD9EDC30005CA7959CE686D198891097A837D006B5222F04DE9
+ 2768248809
+ 143
+ 60
+
+
+
+
+
+ 0
+ ../../../../boost/exception/exception.hpp
+ 0
+ 0
+
+
+
+ -23
+
+
@@ -15990,174 +16134,6 @@
-41
-
-
-
-
- 2
- 53604B11BCC14682BE0D096C301E75F6ADB11F25B737EC7B289C704948C5EBD4
- 2316087863
- 10702
- 927
- 1760DA943E0DCAE6DDB000F3C08D6E6F5F8AEDBBEAC7CAA84A2ED60BFA4B0E1A
- 702729709
- 815
- 1691
-
-
-
-
-
- 0
- ../../../../boost/exception/detail/exception_ptr.hpp
- 0
- 0
-
-
-
- -7
-
-
-
-
-
-
- 2
- 53604B11BCC14682BE0D096C301E75F6ADB11F25B737EC7B289C704948C5EBD4
- 2316087863
- 10702
- 927
- B1E95870ED1A10E091EEF1431E5A1085588DEDD2A21A62AB1B3A9B6D673D316C
- 2683773289
- 7174
- 2508
-
-
-
-
-
- 0
- ../../../../boost/exception/detail/exception_ptr.hpp
- 0
- 0
-
-
-
- -35
-
-
-
-
-
-
- 2
- 53604B11BCC14682BE0D096C301E75F6ADB11F25B737EC7B289C704948C5EBD4
- 2316087863
- 10702
- 927
- 1516D0B7E11CBEB60CE4222565ACCAFF2E9857A8A505C1C26E2AE90087250581
- 3624753243
- 279
- 452
-
-
-
-
-
- 0
- ../../../../boost/exception/detail/exception_ptr.hpp
- 0
- 0
-
-
-
- -26
-
-
-
-
-
-
- 2
- 53604B11BCC14682BE0D096C301E75F6ADB11F25B737EC7B289C704948C5EBD4
- 2316087863
- 10702
- 927
- 44A436E88E9302D907AF1F343063D988F0F87C863E372EA97378835C64480093
- 308353940
- 75
- 26
-
-
-
-
-
- 0
- ../../../../boost/exception/detail/exception_ptr.hpp
- 0
- 0
-
-
-
- -55
-
-
-
-
-
-
- 2
- 53604B11BCC14682BE0D096C301E75F6ADB11F25B737EC7B289C704948C5EBD4
- 2316087863
- 10702
- 927
- 0066D4E6E6B189906E6DE04F08509F3737511701A1B1355B37511EC18E8371F4
- 2078296250
- 305
- 145
-
-
-
-
-
- 0
- ../../../../boost/exception/detail/exception_ptr.hpp
- 0
- 0
-
-
-
- -43
-
-
-
-
-
-
- 2
- 53604B11BCC14682BE0D096C301E75F6ADB11F25B737EC7B289C704948C5EBD4
- 2316087863
- 10702
- 927
- F65C82C62C1EEA672C42FE46189491942DE15B2F8C998E7CAE49588C7D8CBFFA
- 1041900763
- 143
- 9684
-
-
-
-
-
- 0
- ../../../../boost/exception/detail/exception_ptr.hpp
- 0
- 0
-
-
-
- -76
-
-
@@ -16294,6 +16270,30 @@
-10
+
+
+
+
+ 1
+ 167C4E3E81D972BC6C9BA70FA5B9289A26B0D36A711F3769674381E8D410A7F6
+ 3567454851
+ 2594
+ 89
+
+
+
+
+
+ 0
+ ../../../../boost/throw_exception.hpp
+ 0
+ 0
+
+
+
+ -61
+
+
@@ -16387,6 +16387,15 @@
type
+
+
+ 0
+
+ -18
+
+
+ tutorial
+
0
@@ -16783,15 +16792,6 @@
tutorial
-
-
- 0
-
- -18
-
-
- tutorial
-
0