cmake DEAL_II_HAVE_CXX20_FEATURES examples

dealii/dealii cmake/checks/check_01_cxx_features.cmake :110

CHECK_CXX_SOURCE_COMPILES(
    "
    #include <version>

    #if __cplusplus < 201709L && !defined(_MSC_VER) && !defined(__INTEL_COMPILER)
    #  error \"insufficient support for C++20\"
    #endif

    #if !(defined __cpp_lib_ranges) || (__cpp_lib_ranges < 201911)
    #  error \"insufficient support for C++20\"
    #endif

    #if !(defined __cpp_lib_type_identity)
    #  error \"insufficient support for C++20: __cpp_lib_type_identity not defined\"
    #endif

    #if !(defined __cpp_lib_type_identity) || (__cpp_lib_type_identity < 201806)
    #  error \"insufficient support for C++20: __cpp_lib_type_identity is too old \"
    #endif

    // Test concepts and requires clauses
    template <int dim, int spacedim>
    concept is_valid_dim_spacedim = (dim >= 1 && spacedim <= 3 &&
                                     dim <= spacedim);

    template <int dim, int spacedim>
    requires is_valid_dim_spacedim<dim,spacedim>
    class Triangulation
    {};

    Triangulation<1,3> t;


    int main()
    {
    }
    "
    DEAL_II_HAVE_CXX20_FEATURES)