Fix compile issues for gcc 4.8.

- Move constructors can only be defaulted as NOEXCEPT if all members
have NOEXCEPT move constructors.
- gcc 4.8 has some funny parsing bug in `a < b->c`, thinking `b-` is a template parameter.
This commit is contained in:
Antonio Sanchez 2021-07-01 12:47:52 -07:00 committed by Rasmus Munk Larsen
parent 154f00e9ea
commit 6035da5283
2 changed files with 6 additions and 6 deletions

View File

@ -220,7 +220,7 @@ template<typename T, int Size, int _Rows, int _Cols, int _Options> class DenseSt
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(Index size = Size)
}
#else
EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage& other) = default;
EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage&) = default;
#endif
#if !EIGEN_HAS_CXX11
EIGEN_DEVICE_FUNC
@ -230,7 +230,7 @@ template<typename T, int Size, int _Rows, int _Cols, int _Options> class DenseSt
return *this;
}
#else
EIGEN_DEVICE_FUNC DenseStorage& operator=(const DenseStorage& other) = default;
EIGEN_DEVICE_FUNC DenseStorage& operator=(const DenseStorage&) = default;
#endif
#if EIGEN_HAS_RVALUE_REFERENCES
#if !EIGEN_HAS_CXX11
@ -245,8 +245,8 @@ template<typename T, int Size, int _Rows, int _Cols, int _Options> class DenseSt
return *this;
}
#else
EIGEN_DEVICE_FUNC DenseStorage(DenseStorage&& other) EIGEN_NOEXCEPT = default;
EIGEN_DEVICE_FUNC DenseStorage& operator=(DenseStorage&& other) EIGEN_NOEXCEPT = default;
EIGEN_DEVICE_FUNC DenseStorage(DenseStorage&&) = default;
EIGEN_DEVICE_FUNC DenseStorage& operator=(DenseStorage&&) = default;
#endif
#endif
EIGEN_DEVICE_FUNC DenseStorage(Index size, Index rows, Index cols) {

View File

@ -372,7 +372,7 @@ template <typename T> struct ArgMaxTupleReducer
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T* accum) const {
if (t.second < accum->second) {
return;
} else if (t.second > accum->second || t.first < accum->first) {
} else if (t.second > accum->second || accum->first > t.first ) {
*accum = t;
}
}
@ -400,7 +400,7 @@ template <typename T> struct ArgMinTupleReducer
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T& t, T* accum) const {
if (t.second > accum->second) {
return;
} else if (t.second < accum->second || t.first < accum->first) {
} else if (t.second < accum->second || accum->first > t.first) {
*accum = t;
}
}