aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Eigen/src/Core/util/Macros.h6
-rw-r--r--unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h2
-rw-r--r--unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h2
-rw-r--r--unsupported/test/cxx11_tensor_index_list.cpp4
-rw-r--r--unsupported/test/cxx11_tensor_reduction.cpp8
5 files changed, 16 insertions, 6 deletions
diff --git a/Eigen/src/Core/util/Macros.h b/Eigen/src/Core/util/Macros.h
index 001907a0b..40a28d4d6 100644
--- a/Eigen/src/Core/util/Macros.h
+++ b/Eigen/src/Core/util/Macros.h
@@ -133,6 +133,12 @@
#define EIGEN_HAS_VARIADIC_TEMPLATES 1
#endif
+// Does the compiler support const expressions?
+#if (defined(__plusplus) && __cplusplus >= 201402L) || \
+ EIGEN_GNUC_AT_LEAST(4,9)
+#define EIGEN_HAS_CONSTEXPR 1
+#endif
+
/** Allows to disable some optimizations which might affect the accuracy of the result.
* Such optimization are enabled by default, and set EIGEN_FAST_MATH to 0 to disable them.
* They currently include:
diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h b/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h
index c94ed977e..eed0a9f05 100644
--- a/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h
+++ b/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h
@@ -10,7 +10,7 @@
#ifndef EIGEN_CXX11_TENSOR_TENSOR_INDEX_LIST_H
#define EIGEN_CXX11_TENSOR_TENSOR_INDEX_LIST_H
-#if __cplusplus > 199711L
+#ifdef EIGEN_HAS_CONSTEXPR
namespace Eigen {
diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h b/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h
index 83ba1df71..21416afe0 100644
--- a/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h
+++ b/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h
@@ -53,7 +53,7 @@ struct preserve_inner_most_dims {
static const bool value = false;
};
-#if __cplusplus > 199711L
+#ifdef EIGEN_HAS_CONSTEXPR
template <typename ReducedDims, int NumTensorDims>
struct are_inner_most_dims<ReducedDims, NumTensorDims, ColMajor>{
static const bool value = indices_statically_known_to_increase<ReducedDims>()() &&
diff --git a/unsupported/test/cxx11_tensor_index_list.cpp b/unsupported/test/cxx11_tensor_index_list.cpp
index d79a3ed45..c4d4f244f 100644
--- a/unsupported/test/cxx11_tensor_index_list.cpp
+++ b/unsupported/test/cxx11_tensor_index_list.cpp
@@ -11,6 +11,7 @@
#include <Eigen/CXX11/Tensor>
+#ifdef EIGEN_HAS_CONSTEXPR
static void test_static_index_list()
{
@@ -254,11 +255,14 @@ static void test_mixed_index_list()
VERIFY_IS_APPROX(result3(0), expected);
}
+#endif
void test_cxx11_tensor_index_list()
{
+#ifdef EIGEN_HAS_CONSTEXPR
CALL_SUBTEST(test_static_index_list());
CALL_SUBTEST(test_type2index_list());
CALL_SUBTEST(test_dynamic_index_list());
CALL_SUBTEST(test_mixed_index_list());
+#endif
}
diff --git a/unsupported/test/cxx11_tensor_reduction.cpp b/unsupported/test/cxx11_tensor_reduction.cpp
index 5c3184833..0269853a9 100644
--- a/unsupported/test/cxx11_tensor_reduction.cpp
+++ b/unsupported/test/cxx11_tensor_reduction.cpp
@@ -284,7 +284,7 @@ static void test_static_dims() {
Tensor<float, 2, DataLayout> out(72, 97);
in.setRandom();
-#if __cplusplus <= 199711L
+#ifndef EIGEN_HAS_CONSTEXPR
array<int, 2> reduction_axis;
reduction_axis[0] = 1;
reduction_axis[1] = 3;
@@ -314,7 +314,7 @@ static void test_innermost_last_dims() {
in.setRandom();
// Reduce on the innermost dimensions.
-#if __cplusplus <= 199711L
+#ifndef EIGEN_HAS_CONSTEXPR
array<int, 2> reduction_axis;
reduction_axis[0] = 0;
reduction_axis[1] = 1;
@@ -345,7 +345,7 @@ static void test_innermost_first_dims() {
in.setRandom();
// Reduce on the innermost dimensions.
-#if __cplusplus <= 199711L
+#ifndef EIGEN_HAS_CONSTEXPR
array<int, 2> reduction_axis;
reduction_axis[0] = 2;
reduction_axis[1] = 3;
@@ -376,7 +376,7 @@ static void test_reduce_middle_dims() {
in.setRandom();
// Reduce on the innermost dimensions.
-#if __cplusplus <= 199711L
+#ifndef EIGEN_HAS_CONSTEXPR
array<int, 2> reduction_axis;
reduction_axis[0] = 1;
reduction_axis[1] = 2;