aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h
diff options
context:
space:
mode:
authorGravatar Benoit Steiner <benoit.steiner.goog@gmail.com>2015-11-12 18:11:56 -0800
committerGravatar Benoit Steiner <benoit.steiner.goog@gmail.com>2015-11-12 18:11:56 -0800
commit150c12e138ab372d7f43ce19b260acd36ede9fc3 (patch)
tree0ba453d0de90ca8b9a9f5eca1cff3eb2d58b41e1 /unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h
parent8037826367a7becab046df2a8be08a28806a625f (diff)
Completed the IndexList rewrite
Diffstat (limited to 'unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h')
-rw-r--r--unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h50
1 files changed, 28 insertions, 22 deletions
diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h b/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h
index 472fad0da..859c16ab0 100644
--- a/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h
+++ b/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h
@@ -294,48 +294,58 @@ template<DenseIndex N, typename FirstType, typename... OtherTypes> constexpr Den
}
template <typename T>
-struct index_known_statically {
- constexpr bool operator() (DenseIndex) const {
+struct index_known_statically_impl {
+ static constexpr bool run(const DenseIndex) {
return false;
}
};
template <typename FirstType, typename... OtherTypes>
-struct index_known_statically<IndexList<FirstType, OtherTypes...> > {
- constexpr bool operator() (const DenseIndex i) const {
+struct index_known_statically_impl<IndexList<FirstType, OtherTypes...> > {
+ static constexpr bool run(const DenseIndex i) {
return IndexList<FirstType, OtherTypes...>().value_known_statically(i);
}
};
template <typename FirstType, typename... OtherTypes>
-struct index_known_statically<const IndexList<FirstType, OtherTypes...> > {
- constexpr bool operator() (const DenseIndex i) const {
+struct index_known_statically_impl<const IndexList<FirstType, OtherTypes...> > {
+ static constexpr bool run(const DenseIndex i) {
return IndexList<FirstType, OtherTypes...>().value_known_statically(i);
}
};
template <typename T>
-struct all_indices_known_statically {
- constexpr bool operator() () const {
+static constexpr bool index_known_statically(const DenseIndex i) {
+ return index_known_statically_impl<T>::run(i);
+}
+
+template <typename T>
+struct all_indices_known_statically_impl {
+ static constexpr bool run() {
return false;
}
};
template <typename FirstType, typename... OtherTypes>
-struct all_indices_known_statically<IndexList<FirstType, OtherTypes...> > {
- constexpr bool operator() () const {
+struct all_indices_known_statically_impl<IndexList<FirstType, OtherTypes...> > {
+ static constexpr bool run() {
return IndexList<FirstType, OtherTypes...>().all_values_known_statically();
}
};
template <typename FirstType, typename... OtherTypes>
-struct all_indices_known_statically<const IndexList<FirstType, OtherTypes...> > {
- constexpr bool operator() () const {
+struct all_indices_known_statically_impl<const IndexList<FirstType, OtherTypes...> > {
+ static constexpr bool run() {
return IndexList<FirstType, OtherTypes...>().all_values_known_statically();
}
};
template <typename T>
+static constexpr bool all_indices_known_statically() {
+ return all_indices_known_statically_impl<T>::run();
+}
+
+template <typename T>
struct indices_statically_known_to_increase_impl {
static constexpr bool run() {
return false;
@@ -491,18 +501,14 @@ namespace internal {
// No C++11 support
template <typename T>
-struct index_known_statically {
- EIGEN_ALWAYS_INLINE EIGEN_DEVICE_FUNC bool operator() (DenseIndex) const{
- return false;
- }
-};
+static EIGEN_ALWAYS_INLINE EIGEN_DEVICE_FUNC bool index_known_statically(DenseIndex) {
+ return false;
+}
template <typename T>
-struct all_indices_known_statically {
- EIGEN_ALWAYS_INLINE EIGEN_DEVICE_FUNC bool operator() () const {
- return false;
- }
-};
+static EIGEN_ALWAYS_INLINE EIGEN_DEVICE_FUNC bool all_indices_known_statically() {
+ return false;
+}
template <typename T>
static EIGEN_ALWAYS_INLINE EIGEN_DEVICE_FUNC bool indices_statically_known_to_increase() {