From 17200570239f23b2f0d3b434bc0269c46c409791 Mon Sep 17 00:00:00 2001 From: Steve Bronder Date: Fri, 21 May 2021 16:25:32 +0000 Subject: Adds macro for checking if C++14 variable templates are supported --- Eigen/src/Core/util/IntegralConstant.h | 2 +- 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 struct cleanup_index_type static const internal::FixedInt 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 { -- cgit v1.2.3