aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/TriangularMatrix.h
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2014-09-16 10:29:29 -0700
committerGravatar Gael Guennebaud <g.gael@free.fr>2014-09-16 10:29:29 -0700
commit486ca277a002b888a13fe14b136ff54b3979d475 (patch)
tree069851576d88c05dda154f7bef70224e30fa9ea5 /Eigen/src/Core/TriangularMatrix.h
parent466d6d41c6dfda5a2814d0ee6d02439ccda4c8d0 (diff)
Workaround MSVC ICE
Diffstat (limited to 'Eigen/src/Core/TriangularMatrix.h')
-rw-r--r--Eigen/src/Core/TriangularMatrix.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/Eigen/src/Core/TriangularMatrix.h b/Eigen/src/Core/TriangularMatrix.h
index 0383ca9f5..cc585bc6c 100644
--- a/Eigen/src/Core/TriangularMatrix.h
+++ b/Eigen/src/Core/TriangularMatrix.h
@@ -277,7 +277,16 @@ template<typename _MatrixType, unsigned int _Mode> class TriangularView
solve(const MatrixBase<Other>& other) const
{ return Solve<TriangularView, Other>(*this, other.derived()); }
+ // workaround MSVC ICE
+ #ifdef _MSC_VER
+ template<int Side, typename Other>
+ EIGEN_DEVICE_FUNC
+ inline const internal::triangular_solve_retval<Side,TriangularView, Other>
+ solve(const MatrixBase<Other>& other) const
+ { return Base::template solve<Side>(other); }
+ #else
using Base::solve;
+ #endif
#endif // EIGEN_TEST_EVALUATORS
EIGEN_DEVICE_FUNC
@@ -575,7 +584,7 @@ template<typename _MatrixType, unsigned int _Mode> class TriangularViewImpl<_Mat
EIGEN_STRONG_INLINE void _solve_impl(const RhsType &rhs, DstType &dst) const {
if(!(internal::is_same<RhsType,DstType>::value && internal::extract_data(dst) == internal::extract_data(rhs)))
dst = rhs;
- this->template solveInPlace(dst);
+ this->solveInPlace(dst);
}
template<typename ProductType>