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