implement-cxx.texi 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. @node C++ Implementation
  5. @chapter C++ Implementation-Defined Behavior
  6. @cindex implementation-defined behavior, C++ language
  7. A conforming implementation of ISO C++ is required to document its
  8. choice of behavior in each of the areas that are designated
  9. ``implementation defined''. The following lists all such areas,
  10. along with the section numbers from the ISO/IEC 14882:1998 and ISO/IEC
  11. 14882:2003 standards. Some areas are only implementation-defined in
  12. one version of the standard.
  13. Some choices depend on the externally determined ABI for the platform
  14. (including standard character encodings) which GCC follows; these are
  15. listed as ``determined by ABI'' below. @xref{Compatibility, , Binary
  16. Compatibility}, and @uref{http://gcc.gnu.org/readings.html}. Some
  17. choices are documented in the preprocessor manual.
  18. @xref{Implementation-defined behavior, , Implementation-defined
  19. behavior, cpp, The C Preprocessor}. Some choices are documented in
  20. the corresponding document for the C language. @xref{C
  21. Implementation}. Some choices are made by the library and operating
  22. system (or other environment when compiling for a freestanding
  23. environment); refer to their documentation for details.
  24. @menu
  25. * Conditionally-supported behavior::
  26. * Exception handling::
  27. @end menu
  28. @node Conditionally-supported behavior
  29. @section Conditionally-Supported Behavior
  30. @cite{Each implementation shall include documentation that identifies
  31. all conditionally-supported constructs that it does not support (C++0x
  32. 1.4).}
  33. @itemize @bullet
  34. @item
  35. @cite{Whether an argument of class type with a non-trivial copy
  36. constructor or destructor can be passed to ... (C++0x 5.2.2).}
  37. Such argument passing is supported, using the same
  38. pass-by-invisible-reference approach used for normal function
  39. arguments of such types.
  40. @end itemize
  41. @node Exception handling
  42. @section Exception Handling
  43. @itemize @bullet
  44. @item
  45. @cite{In the situation where no matching handler is found, it is
  46. implementation-defined whether or not the stack is unwound before
  47. std::terminate() is called (C++98 15.5.1).}
  48. The stack is not unwound before std::terminate is called.
  49. @end itemize