diff options
author | Steve Bronder <stevo15025@gmail.com> | 2021-05-21 16:25:32 +0000 |
---|---|---|
committer | Rasmus Munk Larsen <rmlarsen@google.com> | 2021-05-21 16:25:32 +0000 |
commit | 17200570239f23b2f0d3b434bc0269c46c409791 (patch) | |
tree | 84c6577a41b079f10d1e9e7919090fa5ebe3ed67 | |
parent | 391094c50743f28f9174f455661f650bf07e0177 (diff) |
Adds macro for checking if C++14 variable templates are supported
-rw-r--r-- | Eigen/src/Core/util/IntegralConstant.h | 2 | ||||
-rw-r--r-- | Eigen/src/Core/util/Macros.h | 18 |
2 files changed, 14 insertions, 6 deletions
diff --git a/Eigen/src/Core/util/IntegralConstant.h b/Eigen/src/Core/util/IntegralConstant.h index ef3fdfb94..d457e02ee 100644 --- a/Eigen/src/Core/util/IntegralConstant.h +++ b/Eigen/src/Core/util/IntegralConstant.h @@ -184,7 +184,7 @@ template<int N, int DynamicKey> struct cleanup_index_type<std::integral_constant #ifndef EIGEN_PARSED_BY_DOXYGEN -#if EIGEN_HAS_CXX14 +#if EIGEN_HAS_CXX14_VARIABLE_TEMPLATES template<int N> static const internal::FixedInt<N> fix{}; #else diff --git a/Eigen/src/Core/util/Macros.h b/Eigen/src/Core/util/Macros.h index d2e844928..fca94a989 100644 --- a/Eigen/src/Core/util/Macros.h +++ b/Eigen/src/Core/util/Macros.h @@ -162,8 +162,8 @@ /// \internal EIGEN_COMP_IBM set to xlc version if the compiler is IBM XL C++ // XLC version -// 3.1 0x0301 -// 4.5 0x0405 +// 3.1 0x0301 +// 4.5 0x0405 // 5.0 0x0500 // 12.1 0x0C01 #if defined(__IBMCPP__) || defined(__xlc__) || defined(__ibmxl__) @@ -637,6 +637,14 @@ #define EIGEN_COMP_CXXVER 03 #endif +#ifndef EIGEN_HAS_CXX14_VARIABLE_TEMPLATES + #if defined(__cpp_variable_templates) && __cpp_variable_templates >= 201304 && EIGEN_MAX_CPP_VER>=14 + #define EIGEN_HAS_CXX14_VARIABLE_TEMPLATES 1 + #else + #define EIGEN_HAS_CXX14_VARIABLE_TEMPLATES 0 + #endif +#endif + // The macros EIGEN_HAS_CXX?? defines a rough estimate of available c++ features // but in practice we should not rely on them but rather on the availabilty of @@ -833,7 +841,7 @@ #endif #endif -// NOTE: the required Apple's clang version is very conservative +// NOTE: the required Apple's clang version is very conservative // and it could be that XCode 9 works just fine. // NOTE: the MSVC version is based on https://en.cppreference.com/w/cpp/compiler_support // and not tested. @@ -962,7 +970,7 @@ #endif #define EIGEN_DEVICE_FUNC __attribute__((flatten)) __attribute__((always_inline)) // All functions callable from CUDA/HIP code must be qualified with __device__ -#elif defined(EIGEN_GPUCC) +#elif defined(EIGEN_GPUCC) #define EIGEN_DEVICE_FUNC __host__ __device__ #else #define EIGEN_DEVICE_FUNC @@ -989,7 +997,7 @@ #else #define eigen_plain_assert(x) #endif -#else +#else #if EIGEN_SAFE_TO_USE_STANDARD_ASSERT_MACRO namespace Eigen { namespace internal { |