Back to Cmake

CMAKE_CXX_KNOWN_FEATURES

Help/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.rst

4.3.211.3 KB
Original Source

CMAKE_CXX_KNOWN_FEATURES

.. versionadded:: 3.1

List of C++ features known to this version of CMake.

The features listed in this global property may be known to be available to the C++ compiler. If the feature is available with the C++ compiler, it will be listed in the :variable:CMAKE_CXX_COMPILE_FEATURES variable.

The features listed here may be used with the :command:target_compile_features command. See the :manual:cmake-compile-features(7) manual for information on compile features and a list of supported compilers.

The features known to this version of CMake are listed below.

High level meta features indicating C++ standard support ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. versionadded:: 3.8

The following meta features indicate general support for the associated language standard. It reflects the language support claimed by the compiler, but it does not necessarily imply complete conformance to that standard.

cxx_std_98 Compiler mode is at least C++ 98.

cxx_std_11 Compiler mode is at least C++ 11.

cxx_std_14 Compiler mode is at least C++ 14.

cxx_std_17 Compiler mode is at least C++ 17.

cxx_std_20 .. versionadded:: 3.12

Compiler mode is at least C++ 20.

cxx_std_23 .. versionadded:: 3.20

Compiler mode is at least C++ 23.

cxx_std_26 .. versionadded:: 3.30

Compiler mode is at least C++ 26.

.. include:: include/CMAKE_LANG_STD_FLAGS.rst

Low level individual compile features ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

For C++ 11 and C++ 14, compilers were sometimes slow to implement certain language features. CMake provided some individual compile features to help projects determine whether specific features were available. These individual features are now less relevant and projects should generally prefer to use the high level meta features instead. Individual compile features are not provided for C++ 17 or later.

See the :manual:cmake-compile-features(7) manual for further discussion of the use of individual compile features.

Individual features from C++ 98 """""""""""""""""""""""""""""""

cxx_template_template_parameters Template template parameters, as defined in ISO/IEC 14882:1998.

Individual features from C++ 11 """""""""""""""""""""""""""""""

cxx_alias_templates Template aliases, as defined in N2258_.

.. _N2258: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf

cxx_alignas Alignment control alignas, as defined in N2341_.

.. _N2341: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf

cxx_alignof Alignment control alignof, as defined in N2341_.

.. _N2341: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf

cxx_attributes Generic attributes, as defined in N2761_.

.. _N2761: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf

cxx_auto_type Automatic type deduction, as defined in N1984_.

.. _N1984: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf

cxx_constexpr Constant expressions, as defined in N2235_.

.. _N2235: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf

cxx_decltype_incomplete_return_types Decltype on incomplete return types, as defined in N3276_.

.. _N3276 : https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3276.pdf

cxx_decltype Decltype, as defined in N2343_.

.. _N2343: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf

cxx_default_function_template_args Default template arguments for function templates, as defined in DR226_

.. _DR226: https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226

cxx_defaulted_functions Defaulted functions, as defined in N2346_.

.. _N2346: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm

cxx_defaulted_move_initializers Defaulted move initializers, as defined in N3053_.

.. _N3053: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html

cxx_delegating_constructors Delegating constructors, as defined in N1986_.

.. _N1986: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf

cxx_deleted_functions Deleted functions, as defined in N2346_.

.. _N2346: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm

cxx_enum_forward_declarations Enum forward declarations, as defined in N2764_.

.. _N2764: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf

cxx_explicit_conversions Explicit conversion operators, as defined in N2437_.

.. _N2437: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf

cxx_extended_friend_declarations Extended friend declarations, as defined in N1791_.

.. _N1791: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf

cxx_extern_templates Extern templates, as defined in N1987_.

.. _N1987: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm

cxx_final Override control final keyword, as defined in N2928_, N3206_ and N3272_.

.. _N2928: https://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm .. _N3206: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm .. _N3272: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm

cxx_func_identifier Predefined __func__ identifier, as defined in N2340_.

.. _N2340: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm

cxx_generalized_initializers Initializer lists, as defined in N2672_.

.. _N2672: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm

cxx_inheriting_constructors Inheriting constructors, as defined in N2540_.

.. _N2540: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm

cxx_inline_namespaces Inline namespaces, as defined in N2535_.

.. _N2535: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm

cxx_lambdas Lambda functions, as defined in N2927_.

.. _N2927: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2927.pdf

cxx_local_type_template_args Local and unnamed types as template arguments, as defined in N2657_.

.. _N2657: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm

cxx_long_long_type long long type, as defined in N1811_.

.. _N1811: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf

cxx_noexcept Exception specifications, as defined in N3050_.

.. _N3050: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html

cxx_nonstatic_member_init Non-static data member initialization, as defined in N2756_.

.. _N2756: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2756.htm

cxx_nullptr Null pointer, as defined in N2431_.

.. _N2431: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf

cxx_override Override control override keyword, as defined in N2928_, N3206_ and N3272_.

.. _N2928: https://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm .. _N3206: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm .. _N3272: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm

cxx_range_for Range-based for, as defined in N2930_.

.. _N2930: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2930.html

cxx_raw_string_literals Raw string literals, as defined in N2442_.

.. _N2442: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm

cxx_reference_qualified_functions Reference qualified functions, as defined in N2439_.

.. _N2439: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm

cxx_right_angle_brackets Right angle bracket parsing, as defined in N1757_.

.. _N1757: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html

cxx_rvalue_references R-value references, as defined in N2118_.

.. _N2118: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html

cxx_sizeof_member Size of non-static data members, as defined in N2253_.

.. _N2253: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html

cxx_static_assert Static assert, as defined in N1720_.

.. _N1720: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html

cxx_strong_enums Strongly typed enums, as defined in N2347_.

.. _N2347: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf

cxx_thread_local Thread-local variables, as defined in N2659_.

.. _N2659: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm

cxx_trailing_return_types Automatic function return type, as defined in N2541_.

.. _N2541: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm

cxx_unicode_literals Unicode string literals, as defined in N2442_.

.. _N2442: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm

cxx_uniform_initialization Uniform initialization, as defined in N2640_.

.. _N2640: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2640.pdf

cxx_unrestricted_unions Unrestricted unions, as defined in N2544_.

.. _N2544: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf

cxx_user_literals User-defined literals, as defined in N2765_.

.. _N2765: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf

cxx_variadic_macros Variadic macros, as defined in N1653_.

.. _N1653: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm

cxx_variadic_templates Variadic templates, as defined in N2242_.

.. _N2242: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf

Individual features from C++ 14 """""""""""""""""""""""""""""""

cxx_aggregate_default_initializers Aggregate default initializers, as defined in N3605_.

.. _N3605: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3605.html

cxx_attribute_deprecated [[deprecated]] attribute, as defined in N3760_.

.. _N3760: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3760.html

cxx_binary_literals Binary literals, as defined in N3472_.

.. _N3472: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3472.pdf

cxx_contextual_conversions Contextual conversions, as defined in N3323_.

.. _N3323: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3323.pdf

cxx_decltype_auto decltype(auto) semantics, as defined in N3638_.

.. _N3638: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3638.html

cxx_digit_separators Digit separators, as defined in N3781_.

.. _N3781: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3781.pdf

cxx_generic_lambdas Generic lambdas, as defined in N3649_.

.. _N3649: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3649.html

cxx_lambda_init_captures Initialized lambda captures, as defined in N3648_.

.. _N3648: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3648.html

cxx_relaxed_constexpr Relaxed constexpr, as defined in N3652_.

.. _N3652: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3652.html

cxx_return_type_deduction Return type deduction on normal functions, as defined in N3386_.

.. _N3386: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3386.html

cxx_variable_templates Variable templates, as defined in N3651_.

.. _N3651: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3651.pdf