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 class TriangularView solve(const MatrixBase& other) const { return Solve(*this, other.derived()); } + // workaround MSVC ICE + #ifdef _MSC_VER + template + EIGEN_DEVICE_FUNC + inline const internal::triangular_solve_retval + solve(const MatrixBase& other) const + { return Base::template solve(other); } + #else using Base::solve; + #endif #endif // EIGEN_TEST_EVALUATORS EIGEN_DEVICE_FUNC @@ -575,7 +584,7 @@ template class TriangularViewImpl<_Mat EIGEN_STRONG_INLINE void _solve_impl(const RhsType &rhs, DstType &dst) const { if(!(internal::is_same::value && internal::extract_data(dst) == internal::extract_data(rhs))) dst = rhs; - this->template solveInPlace(dst); + this->solveInPlace(dst); } template