Import pre-release gcc-5.0 to new vendor branch
[dragonfly.git] / contrib / gcc-5.0 / gcc / doc / implement-cxx.texi
1 @c Copyright (C) 2009-2015 Free Software Foundation, Inc.
2 @c This is part of the GCC manual.
3 @c For copying conditions, see the file gcc.texi.
4
5 @node C++ Implementation
6 @chapter C++ Implementation-defined behavior
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,
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
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::
30 * Exception handling::
31 @end menu
32
33 @node Conditionally-supported behavior
34 @section Conditionally-supported behavior
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
45 Such argument passing is supported, using the same
46 pass-by-invisible-reference approach used for normal function
47 arguments of such types.
48
49 @end itemize
50
51 @node Exception handling
52 @section Exception handling
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