diff options
author | Benoit Steiner <benoit.steiner.goog@gmail.com> | 2015-11-12 16:41:14 -0800 |
---|---|---|
committer | Benoit Steiner <benoit.steiner.goog@gmail.com> | 2015-11-12 16:41:14 -0800 |
commit | e9ecfad7967fd5285846647372897ecdc125f976 (patch) | |
tree | bb81fde1cd6211895fa65c14b5c3ba658fa237d2 | |
parent | 7a1316fcc564b709b361592c6897591d9747c401 (diff) |
Started to make the IndexList code compile by more compilers
-rw-r--r-- | unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h | 16 | ||||
-rw-r--r-- | unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h | 30 | ||||
-rw-r--r-- | unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h | 8 |
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; }; |