1*ec02198aSmrg@c Copyright (C) 2009-2020 Free Software Foundation, Inc.
210d565efSmrg@c This is part of the GCC manual.
310d565efSmrg@c For copying conditions, see the file gcc.texi.
410d565efSmrg
510d565efSmrg@node C++ Implementation
610d565efSmrg@chapter C++ Implementation-Defined Behavior
710d565efSmrg@cindex implementation-defined behavior, C++ language
810d565efSmrg
910d565efSmrgA conforming implementation of ISO C++ is required to document its
1010d565efSmrgchoice of behavior in each of the areas that are designated
1110d565efSmrg``implementation defined''.  The following lists all such areas,
1210d565efSmrgalong with the section numbers from the ISO/IEC 14882:1998 and ISO/IEC
1310d565efSmrg14882:2003 standards.  Some areas are only implementation-defined in
1410d565efSmrgone version of the standard.
1510d565efSmrg
1610d565efSmrgSome choices depend on the externally determined ABI for the platform
1710d565efSmrg(including standard character encodings) which GCC follows; these are
1810d565efSmrglisted as ``determined by ABI'' below.  @xref{Compatibility, , Binary
1910d565efSmrgCompatibility}, and @uref{http://gcc.gnu.org/readings.html}.  Some
2010d565efSmrgchoices are documented in the preprocessor manual.
2110d565efSmrg@xref{Implementation-defined behavior, , Implementation-defined
2210d565efSmrgbehavior, cpp, The C Preprocessor}.  Some choices are documented in
2310d565efSmrgthe corresponding document for the C language.  @xref{C
2410d565efSmrgImplementation}.  Some choices are made by the library and operating
2510d565efSmrgsystem (or other environment when compiling for a freestanding
2610d565efSmrgenvironment); refer to their documentation for details.
2710d565efSmrg
2810d565efSmrg@menu
2910d565efSmrg* Conditionally-supported behavior::
3010d565efSmrg* Exception handling::
3110d565efSmrg@end menu
3210d565efSmrg
3310d565efSmrg@node Conditionally-supported behavior
3410d565efSmrg@section Conditionally-Supported Behavior
3510d565efSmrg
3610d565efSmrg@cite{Each implementation shall include documentation that identifies
3710d565efSmrgall conditionally-supported constructs that it does not support (C++0x
3810d565efSmrg1.4).}
3910d565efSmrg
4010d565efSmrg@itemize @bullet
4110d565efSmrg@item
4210d565efSmrg@cite{Whether an argument of class type with a non-trivial copy
4310d565efSmrgconstructor or destructor can be passed to ... (C++0x 5.2.2).}
4410d565efSmrg
4510d565efSmrgSuch argument passing is supported, using the same
4610d565efSmrgpass-by-invisible-reference approach used for normal function
4710d565efSmrgarguments of such types.
4810d565efSmrg
4910d565efSmrg@end itemize
5010d565efSmrg
5110d565efSmrg@node Exception handling
5210d565efSmrg@section Exception Handling
5310d565efSmrg
5410d565efSmrg@itemize @bullet
5510d565efSmrg@item
5610d565efSmrg@cite{In the situation where no matching handler is found, it is
5710d565efSmrgimplementation-defined whether or not the stack is unwound before
5810d565efSmrgstd::terminate() is called (C++98 15.5.1).}
5910d565efSmrg
6010d565efSmrgThe stack is not unwound before std::terminate is called.
6110d565efSmrg
6210d565efSmrg@end itemize
63