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