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