.. _CheckCXXFeatures:

CheckCXXFeatures
================

.. cmake_module::

   Module that checks for supported C++20, C++17, C++14 and non-standard features.

   The behaviour of this module can be modified by the following variable:

   :ref:`DISABLE_CXX_VERSION_CHECK`
      Disable checking for std=c++14 (c++17, ...)

   This module internally sets the following variables, which are then
   exported into the config.h of the current dune module.

   :code:`HAS_ATTRIBUTE_UNUSED`
      True if attribute unused is supported

   :code:`HAS_ATTRIBUTE_DEPRECATED`
      True if attribute deprecated is supported

   :code:`HAS_ATTRIBUTE_DEPRECATED_MSG`
      True if attribute deprecated("msg") is supported

   :code:`DUNE_HAVE_CXX_CLASS_TEMPLATE_ARGUMENT_DEDUCTION`
      True if C++17's class template argument deduction is supported

   :code:`DUNE_HAVE_CXX_OPTIONAL`
      True if C++17's optional implementation is supported

   :code:`DUNE_HAVE_CXX_VARIANT`
      True if C++17's variant implementation is supported

