aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Steve Bronder <stevo15025@gmail.com>2021-05-21 16:25:32 +0000
committerGravatar Rasmus Munk Larsen <rmlarsen@google.com>2021-05-21 16:25:32 +0000
commit17200570239f23b2f0d3b434bc0269c46c409791 (patch)
tree84c6577a41b079f10d1e9e7919090fa5ebe3ed67
parent391094c50743f28f9174f455661f650bf07e0177 (diff)
Adds macro for checking if C++14 variable templates are supported
-rw-r--r--Eigen/src/Core/util/IntegralConstant.h2
-rw-r--r--Eigen/src/Core/util/Macros.h18
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 {