CompileFeatures: Relax cxx_relaxed_constexpr compiler requirements

This in effect means that cxx_relaxed_constexpr is now supported
by MSVC and Intel 18.0-18.04.
This commit is contained in:
Robert Maynard
2019-05-07 13:20:21 -04:00
committed by Brad King
parent 4aace9b015
commit 1ebb0d79fe
3 changed files with 5 additions and 6 deletions

View File

@@ -24,7 +24,7 @@ set(DETECT_CXX14 "((__cplusplus >= 201300L) || ((__cplusplus == 201103L) && !def
unset(DETECT_BUGGY_ICC15) unset(DETECT_BUGGY_ICC15)
set(Intel17_CXX14 "__INTEL_COMPILER >= 1700 && ${DETECT_CXX14}") set(Intel17_CXX14 "__INTEL_COMPILER >= 1700 && ${DETECT_CXX14}")
set(_cmake_feature_test_cxx_relaxed_constexpr "__cpp_constexpr >= 201304 || (${Intel17_CXX14} && !(__INTEL_COMPILER == 1800 && __INTEL_COMPILER_UPDATE < 5) && !defined(_MSC_VER))") set(_cmake_feature_test_cxx_relaxed_constexpr "__cpp_constexpr >= 201304 || (${Intel17_CXX14} && !defined(_MSC_VER))")
set(Intel16_CXX14 "__INTEL_COMPILER >= 1600 && ${DETECT_CXX14}") set(Intel16_CXX14 "__INTEL_COMPILER >= 1600 && ${DETECT_CXX14}")
set(_cmake_feature_test_cxx_aggregate_default_initializers "${Intel16_CXX14}") set(_cmake_feature_test_cxx_aggregate_default_initializers "${Intel16_CXX14}")

View File

@@ -9,10 +9,8 @@ set(_cmake_oldestSupported "_MSC_VER >= 1600")
# https://docs.microsoft.com/en-us/cpp/cpp-conformance-improvements-2017#update_153 # https://docs.microsoft.com/en-us/cpp/cpp-conformance-improvements-2017#update_153
set(_cmake_feature_test_cxx_decltype_incomplete_return_types "_MSC_VER >= 1911") set(_cmake_feature_test_cxx_decltype_incomplete_return_types "_MSC_VER >= 1911")
set(MSVC_2017 "_MSC_VER >= 1910") # VS 2017 v15.3 fixes support for "N3652 Extended constexpr"
# VS 2017 introduces support for "N3652 Extended constexpr" set(_cmake_feature_test_cxx_relaxed_constexpr "_MSC_VER >= 1911")
# but as of v15.6 there are still bugs in the implementation
#set(_cmake_feature_test_cxx_relaxed_constexpr "${MSVC_2017}")
# VS 2017 Preview introduces support for aggregate initializers. # VS 2017 Preview introduces support for aggregate initializers.
set(_cmake_feature_test_cxx_aggregate_default_initializers "_MSC_FULL_VER >= 190024406") set(_cmake_feature_test_cxx_aggregate_default_initializers "_MSC_FULL_VER >= 190024406")

View File

@@ -22,6 +22,7 @@ constexpr int g(const int (&is)[4])
int someFunc() int someFunc()
{ {
constexpr int k3 = g({ 4, 5, 6, 7 }); constexpr int values[4] = { 4, 5, 6, 7 };
constexpr int k3 = g(values);
return k3 - 42; return k3 - 42;
} }