aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/Eigen/CXX11
diff options
context:
space:
mode:
authorGravatar Benoit Steiner <benoit.steiner.goog@gmail.com>2015-11-12 16:41:14 -0800
committerGravatar Benoit Steiner <benoit.steiner.goog@gmail.com>2015-11-12 16:41:14 -0800
commite9ecfad7967fd5285846647372897ecdc125f976 (patch)
treebb81fde1cd6211895fa65c14b5c3ba658fa237d2 /unsupported/Eigen/CXX11
parent7a1316fcc564b709b361592c6897591d9747c401 (diff)
Started to make the IndexList code compile by more compilers
Diffstat (limited to 'unsupported/Eigen/CXX11')
-rw-r--r--unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h16
-rw-r--r--unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h30
-rw-r--r--unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h8
3 files changed, 29 insertions, 25 deletions
diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h b/unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h
index 17d89d5e1..da7782188 100644
--- a/unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h
+++ b/unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h
@@ -72,14 +72,14 @@ struct all_indices_known_statically<const DimensionList<Index, Rank> > {
};
template <typename Index, std::size_t Rank>
-struct indices_statically_known_to_increase<DimensionList<Index, Rank> > {
- constexpr bool operator() () const {
+struct indices_statically_known_to_increase_impl<DimensionList<Index, Rank> > {
+ static constexpr bool run() {
return true;
}
};
template <typename Index, std::size_t Rank>
-struct indices_statically_known_to_increase<const DimensionList<Index, Rank> > {
- constexpr bool operator() () const {
+struct indices_statically_known_to_increase_impl<const DimensionList<Index, Rank> > {
+ static constexpr bool run() {
return true;
}
};
@@ -164,14 +164,14 @@ struct all_indices_known_statically<const DimensionList<Index, Rank> > {
};
template <typename Index, std::size_t Rank>
-struct indices_statically_known_to_increase<DimensionList<Index, Rank> > {
- EIGEN_ALWAYS_INLINE bool operator() () const {
+struct indices_statically_known_to_increase_impl<DimensionList<Index, Rank> > {
+ static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run() {
return true;
}
};
template <typename Index, std::size_t Rank>
-struct indices_statically_known_to_increase<const DimensionList<Index, Rank> > {
- EIGEN_ALWAYS_INLINE bool operator() () const {
+struct indices_statically_known_to_increase_impl<const DimensionList<Index, Rank> > {
+ static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run() {
return true;
}
};
diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h b/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h
index dcd2464f1..69d21d3c1 100644
--- a/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h
+++ b/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h
@@ -336,26 +336,32 @@ struct all_indices_known_statically<const IndexList<FirstType, OtherTypes...> >
};
template <typename T>
-struct indices_statically_known_to_increase {
- constexpr bool operator() () const {
+struct indices_statically_known_to_increase_impl {
+ static constexpr bool run() {
return false;
}
};
template <typename FirstType, typename... OtherTypes>
-struct indices_statically_known_to_increase<IndexList<FirstType, OtherTypes...> > {
- constexpr bool operator() () const {
- return IndexList<FirstType, OtherTypes...>().values_statically_known_to_increase();
+ struct indices_statically_known_to_increase_impl<IndexList<FirstType, OtherTypes...> > {
+ static constexpr bool run() {
+ return Eigen::IndexList<FirstType, OtherTypes...>().values_statically_known_to_increase();
}
};
template <typename FirstType, typename... OtherTypes>
-struct indices_statically_known_to_increase<const IndexList<FirstType, OtherTypes...> > {
- constexpr bool operator() () const {
- return IndexList<FirstType, OtherTypes...>().values_statically_known_to_increase();
+ struct indices_statically_known_to_increase_impl<const IndexList<FirstType, OtherTypes...> > {
+ static constexpr bool run() {
+ return Eigen::IndexList<FirstType, OtherTypes...>().values_statically_known_to_increase();
}
};
+template <typename T>
+static constexpr bool indices_statically_known_to_increase() {
+ return indices_statically_known_to_increase_impl<T>::run();
+}
+
+
template <typename Tx>
struct index_statically_eq {
constexpr bool operator() (DenseIndex, DenseIndex) const {
@@ -473,11 +479,9 @@ struct all_indices_known_statically {
};
template <typename T>
-struct indices_statically_known_to_increase {
- EIGEN_ALWAYS_INLINE EIGEN_DEVICE_FUNC bool operator() () const {
- return false;
- }
-};
+static EIGEN_ALWAYS_INLINE EIGEN_DEVICE_FUNC bool indices_statically_known_to_increase() {
+ return false;
+}
template <typename T>
struct index_statically_eq {
diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h b/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h
index c1cdb98a4..4d3e25d87 100644
--- a/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h
+++ b/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h
@@ -88,14 +88,14 @@ struct preserve_inner_most_dims {
#if defined(EIGEN_HAS_CONSTEXPR) && defined(EIGEN_HAS_VARIADIC_TEMPLATES)
template <typename ReducedDims, int NumTensorDims>
struct are_inner_most_dims<ReducedDims, NumTensorDims, ColMajor>{
- static const bool tmp1 = indices_statically_known_to_increase<ReducedDims>()();
+ static const bool tmp1 = indices_statically_known_to_increase<ReducedDims>();
static const bool tmp2 = index_statically_eq<ReducedDims>()(0, 0);
static const bool tmp3 = index_statically_eq<ReducedDims>()(array_size<ReducedDims>::value-1, array_size<ReducedDims>::value-1);
static const bool value = tmp1 & tmp2 & tmp3;
};
template <typename ReducedDims, int NumTensorDims>
struct are_inner_most_dims<ReducedDims, NumTensorDims, RowMajor>{
- static const bool tmp1 = indices_statically_known_to_increase<ReducedDims>()();
+ static const bool tmp1 = indices_statically_known_to_increase<ReducedDims>();
static const bool tmp2 = index_statically_eq<ReducedDims>()(0, NumTensorDims - array_size<ReducedDims>::value);
static const bool tmp3 = index_statically_eq<ReducedDims>()(array_size<ReducedDims>::value - 1, NumTensorDims - 1);
static const bool value = tmp1 & tmp2 & tmp3;
@@ -103,14 +103,14 @@ struct are_inner_most_dims<ReducedDims, NumTensorDims, RowMajor>{
};
template <typename ReducedDims, int NumTensorDims>
struct preserve_inner_most_dims<ReducedDims, NumTensorDims, ColMajor>{
- static const bool tmp1 = indices_statically_known_to_increase<ReducedDims>()();
+ static const bool tmp1 = indices_statically_known_to_increase<ReducedDims>();
static const bool tmp2 = index_statically_gt<ReducedDims>()(0, 0);
static const bool value = tmp1 & tmp2;
};
template <typename ReducedDims, int NumTensorDims>
struct preserve_inner_most_dims<ReducedDims, NumTensorDims, RowMajor>{
- static const bool tmp1 = indices_statically_known_to_increase<ReducedDims>()();
+ static const bool tmp1 = indices_statically_known_to_increase<ReducedDims>();
static const bool tmp2 = index_statically_lt<ReducedDims>()(array_size<ReducedDims>::value - 1, NumTensorDims - 1);
static const bool value = tmp1 & tmp2;
};