CMAKE_CXX_KNOWN_FEATURES.rst 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. CMAKE_CXX_KNOWN_FEATURES
  2. ------------------------
  3. List of C++ features known to this version of CMake.
  4. The features listed in this global property may be known to be available to the
  5. C++ compiler. If the feature is available with the C++ compiler, it will
  6. be listed in the :variable:`CMAKE_CXX_COMPILE_FEATURES` variable.
  7. The features listed here may be used with the :command:`target_compile_features`
  8. command. See the :manual:`cmake-compile-features(7)` manual for information on
  9. compile features and a list of supported compilers.
  10. The features known to this version of CMake are:
  11. ``cxx_std_98``
  12. Compiler mode is aware of C++ 98.
  13. ``cxx_std_11``
  14. Compiler mode is aware of C++ 11.
  15. ``cxx_std_14``
  16. Compiler mode is aware of C++ 14.
  17. ``cxx_std_17``
  18. Compiler mode is aware of C++ 17.
  19. ``cxx_aggregate_default_initializers``
  20. Aggregate default initializers, as defined in N3605_.
  21. .. _N3605: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3605.html
  22. ``cxx_alias_templates``
  23. Template aliases, as defined in N2258_.
  24. .. _N2258: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf
  25. ``cxx_alignas``
  26. Alignment control ``alignas``, as defined in N2341_.
  27. .. _N2341: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf
  28. ``cxx_alignof``
  29. Alignment control ``alignof``, as defined in N2341_.
  30. .. _N2341: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf
  31. ``cxx_attributes``
  32. Generic attributes, as defined in N2761_.
  33. .. _N2761: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf
  34. ``cxx_attribute_deprecated``
  35. ``[[deprecated]]`` attribute, as defined in N3760_.
  36. .. _N3760: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3760.html
  37. ``cxx_auto_type``
  38. Automatic type deduction, as defined in N1984_.
  39. .. _N1984: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf
  40. ``cxx_binary_literals``
  41. Binary literals, as defined in N3472_.
  42. .. _N3472: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3472.pdf
  43. ``cxx_constexpr``
  44. Constant expressions, as defined in N2235_.
  45. .. _N2235: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf
  46. ``cxx_contextual_conversions``
  47. Contextual conversions, as defined in N3323_.
  48. .. _N3323: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3323.pdf
  49. ``cxx_decltype_incomplete_return_types``
  50. Decltype on incomplete return types, as defined in N3276_.
  51. .. _N3276 : http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3276.pdf
  52. ``cxx_decltype``
  53. Decltype, as defined in N2343_.
  54. .. _N2343: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf
  55. ``cxx_decltype_auto``
  56. ``decltype(auto)`` semantics, as defined in N3638_.
  57. .. _N3638: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3638.html
  58. ``cxx_default_function_template_args``
  59. Default template arguments for function templates, as defined in DR226_
  60. .. _DR226: http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226
  61. ``cxx_defaulted_functions``
  62. Defaulted functions, as defined in N2346_.
  63. .. _N2346: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm
  64. ``cxx_defaulted_move_initializers``
  65. Defaulted move initializers, as defined in N3053_.
  66. .. _N3053: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html
  67. ``cxx_delegating_constructors``
  68. Delegating constructors, as defined in N1986_.
  69. .. _N1986: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf
  70. ``cxx_deleted_functions``
  71. Deleted functions, as defined in N2346_.
  72. .. _N2346: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm
  73. ``cxx_digit_separators``
  74. Digit separators, as defined in N3781_.
  75. .. _N3781: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3781.pdf
  76. ``cxx_enum_forward_declarations``
  77. Enum forward declarations, as defined in N2764_.
  78. .. _N2764: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf
  79. ``cxx_explicit_conversions``
  80. Explicit conversion operators, as defined in N2437_.
  81. .. _N2437: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf
  82. ``cxx_extended_friend_declarations``
  83. Extended friend declarations, as defined in N1791_.
  84. .. _N1791: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf
  85. ``cxx_extern_templates``
  86. Extern templates, as defined in N1987_.
  87. .. _N1987: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm
  88. ``cxx_final``
  89. Override control ``final`` keyword, as defined in N2928_, N3206_ and N3272_.
  90. .. _N2928: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm
  91. .. _N3206: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm
  92. .. _N3272: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm
  93. ``cxx_func_identifier``
  94. Predefined ``__func__`` identifier, as defined in N2340_.
  95. .. _N2340: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm
  96. ``cxx_generalized_initializers``
  97. Initializer lists, as defined in N2672_.
  98. .. _N2672: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm
  99. ``cxx_generic_lambdas``
  100. Generic lambdas, as defined in N3649_.
  101. .. _N3649: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3649.html
  102. ``cxx_inheriting_constructors``
  103. Inheriting constructors, as defined in N2540_.
  104. .. _N2540: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm
  105. ``cxx_inline_namespaces``
  106. Inline namespaces, as defined in N2535_.
  107. .. _N2535: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm
  108. ``cxx_lambdas``
  109. Lambda functions, as defined in N2927_.
  110. .. _N2927: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2927.pdf
  111. ``cxx_lambda_init_captures``
  112. Initialized lambda captures, as defined in N3648_.
  113. .. _N3648: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3648.html
  114. ``cxx_local_type_template_args``
  115. Local and unnamed types as template arguments, as defined in N2657_.
  116. .. _N2657: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm
  117. ``cxx_long_long_type``
  118. ``long long`` type, as defined in N1811_.
  119. .. _N1811: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf
  120. ``cxx_noexcept``
  121. Exception specifications, as defined in N3050_.
  122. .. _N3050: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html
  123. ``cxx_nonstatic_member_init``
  124. Non-static data member initialization, as defined in N2756_.
  125. .. _N2756: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2756.htm
  126. ``cxx_nullptr``
  127. Null pointer, as defined in N2431_.
  128. .. _N2431: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf
  129. ``cxx_override``
  130. Override control ``override`` keyword, as defined in N2928_, N3206_
  131. and N3272_.
  132. .. _N2928: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm
  133. .. _N3206: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm
  134. .. _N3272: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm
  135. ``cxx_range_for``
  136. Range-based for, as defined in N2930_.
  137. .. _N2930: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2930.html
  138. ``cxx_raw_string_literals``
  139. Raw string literals, as defined in N2442_.
  140. .. _N2442: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
  141. ``cxx_reference_qualified_functions``
  142. Reference qualified functions, as defined in N2439_.
  143. .. _N2439: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm
  144. ``cxx_relaxed_constexpr``
  145. Relaxed constexpr, as defined in N3652_.
  146. .. _N3652: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3652.html
  147. ``cxx_return_type_deduction``
  148. Return type deduction on normal functions, as defined in N3386_.
  149. .. _N3386: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3386.html
  150. ``cxx_right_angle_brackets``
  151. Right angle bracket parsing, as defined in N1757_.
  152. .. _N1757: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html
  153. ``cxx_rvalue_references``
  154. R-value references, as defined in N2118_.
  155. .. _N2118: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html
  156. ``cxx_sizeof_member``
  157. Size of non-static data members, as defined in N2253_.
  158. .. _N2253: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html
  159. ``cxx_static_assert``
  160. Static assert, as defined in N1720_.
  161. .. _N1720: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html
  162. ``cxx_strong_enums``
  163. Strongly typed enums, as defined in N2347_.
  164. .. _N2347: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf
  165. ``cxx_thread_local``
  166. Thread-local variables, as defined in N2659_.
  167. .. _N2659: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm
  168. ``cxx_trailing_return_types``
  169. Automatic function return type, as defined in N2541_.
  170. .. _N2541: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm
  171. ``cxx_unicode_literals``
  172. Unicode string literals, as defined in N2442_.
  173. .. _N2442: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
  174. ``cxx_uniform_initialization``
  175. Uniform initialization, as defined in N2640_.
  176. .. _N2640: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2640.pdf
  177. ``cxx_unrestricted_unions``
  178. Unrestricted unions, as defined in N2544_.
  179. .. _N2544: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf
  180. ``cxx_user_literals``
  181. User-defined literals, as defined in N2765_.
  182. .. _N2765: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf
  183. ``cxx_variable_templates``
  184. Variable templates, as defined in N3651_.
  185. .. _N3651: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3651.pdf
  186. ``cxx_variadic_macros``
  187. Variadic macros, as defined in N1653_.
  188. .. _N1653: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm
  189. ``cxx_variadic_templates``
  190. Variadic templates, as defined in N2242_.
  191. .. _N2242: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf
  192. ``cxx_template_template_parameters``
  193. Template template parameters, as defined in ``ISO/IEC 14882:1998``.