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