1 |
711 |
jeremybenn |
@c Copyright (C) 2009, 2010
|
2 |
|
|
@c Free Software Foundation, Inc.
|
3 |
|
|
@c This is part of the GCC manual.
|
4 |
|
|
@c For copying conditions, see the file gcc.texi.
|
5 |
|
|
|
6 |
|
|
@node C++ Implementation
|
7 |
|
|
@chapter C++ Implementation-defined behavior
|
8 |
|
|
@cindex implementation-defined behavior, C++ language
|
9 |
|
|
|
10 |
|
|
A conforming implementation of ISO C++ is required to document its
|
11 |
|
|
choice of behavior in each of the areas that are designated
|
12 |
|
|
``implementation defined''. The following lists all such areas,
|
13 |
|
|
along with the section numbers from the ISO/IEC 14822:1998 and ISO/IEC
|
14 |
|
|
14822:2003 standards. Some areas are only implementation-defined in
|
15 |
|
|
one version of the standard.
|
16 |
|
|
|
17 |
|
|
Some choices depend on the externally determined ABI for the platform
|
18 |
|
|
(including standard character encodings) which GCC follows; these are
|
19 |
|
|
listed as ``determined by ABI'' below. @xref{Compatibility, , Binary
|
20 |
|
|
Compatibility}, and @uref{http://gcc.gnu.org/readings.html}. Some
|
21 |
|
|
choices are documented in the preprocessor manual.
|
22 |
|
|
@xref{Implementation-defined behavior, , Implementation-defined
|
23 |
|
|
behavior, cpp, The C Preprocessor}. Some choices are documented in
|
24 |
|
|
the corresponding document for the C language. @xref{C
|
25 |
|
|
Implementation}. Some choices are made by the library and operating
|
26 |
|
|
system (or other environment when compiling for a freestanding
|
27 |
|
|
environment); refer to their documentation for details.
|
28 |
|
|
|
29 |
|
|
@menu
|
30 |
|
|
* Conditionally-supported behavior::
|
31 |
|
|
* Exception handling::
|
32 |
|
|
@end menu
|
33 |
|
|
|
34 |
|
|
@node Conditionally-supported behavior
|
35 |
|
|
@section Conditionally-supported behavior
|
36 |
|
|
|
37 |
|
|
@cite{Each implementation shall include documentation that identifies
|
38 |
|
|
all conditionally-supported constructs that it does not support (C++0x
|
39 |
|
|
1.4).}
|
40 |
|
|
|
41 |
|
|
@itemize @bullet
|
42 |
|
|
@item
|
43 |
|
|
@cite{Whether an argument of class type with a non-trivial copy
|
44 |
|
|
constructor or destructor can be passed to ... (C++0x 5.2.2).}
|
45 |
|
|
|
46 |
|
|
Such argument passing is not supported.
|
47 |
|
|
|
48 |
|
|
@end itemize
|
49 |
|
|
|
50 |
|
|
@node Exception handling
|
51 |
|
|
@section Exception handling
|
52 |
|
|
|
53 |
|
|
@itemize @bullet
|
54 |
|
|
@item
|
55 |
|
|
@cite{In the situation where no matching handler is found, it is
|
56 |
|
|
implementation-defined whether or not the stack is unwound before
|
57 |
|
|
std::terminate() is called (C++98 15.5.1).}
|
58 |
|
|
|
59 |
|
|
The stack is not unwound before std::terminate is called.
|
60 |
|
|
|
61 |
|
|
@end itemize
|