if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16.0)
  # MSVC has no specific language level or flags to change it.
  set(CMAKE_CXX_STANDARD_DEFAULT "")
endif()

macro(cmake_record_cxx_compile_features)
  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16.0)
    list(APPEND CMAKE_CXX_COMPILE_FEATURES
      cxx_std_98
      cxx_std_11
      cxx_std_14
      cxx_std_17
      )
    _record_compiler_features(CXX "" CMAKE_CXX_COMPILE_FEATURES)
  endif()
endmacro()