1@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
10A conforming implementation of ISO C++ is required to document its
11choice of behavior in each of the areas that are designated
12``implementation defined''.  The following lists all such areas,
13along with the section numbers from the ISO/IEC 14882:1998 and ISO/IEC
1414882:2003 standards.  Some areas are only implementation-defined in
15one version of the standard.
16
17Some choices depend on the externally determined ABI for the platform
18(including standard character encodings) which GCC follows; these are
19listed as ``determined by ABI'' below.  @xref{Compatibility, , Binary
20Compatibility}, and @uref{http://gcc.gnu.org/readings.html}.  Some
21choices are documented in the preprocessor manual.
22@xref{Implementation-defined behavior, , Implementation-defined
23behavior, cpp, The C Preprocessor}.  Some choices are documented in
24the corresponding document for the C language.  @xref{C
25Implementation}.  Some choices are made by the library and operating
26system (or other environment when compiling for a freestanding
27environment); 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
38all conditionally-supported constructs that it does not support (C++0x
391.4).}
40
41@itemize @bullet
42@item
43@cite{Whether an argument of class type with a non-trivial copy
44constructor or destructor can be passed to ... (C++0x 5.2.2).}
45
46Such 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
56implementation-defined whether or not the stack is unwound before
57std::terminate() is called (C++98 15.5.1).}
58
59The stack is not unwound before std::terminate is called.
60
61@end itemize
62