diff options
author | Gael Guennebaud <g.gael@free.fr> | 2015-09-02 21:38:40 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2015-09-02 21:38:40 +0200 |
commit | 92b9f0e102b35c3091bdeea3fc65f38f0e93c612 (patch) | |
tree | a94a71fd6166d8f54e0ac74d6bd8afe4145754a6 /Eigen/src/SparseCore | |
parent | cda55ab245aa40aacb1fc2030c5eb475afd182ad (diff) |
Cleaning pass on evaluators: remove the useless and error prone evaluator<>::type indirection.
Diffstat (limited to 'Eigen/src/SparseCore')
-rw-r--r-- | Eigen/src/SparseCore/ConservativeSparseSparseProduct.h | 4 | ||||
-rw-r--r-- | Eigen/src/SparseCore/SparseAssign.h | 12 | ||||
-rw-r--r-- | Eigen/src/SparseCore/SparseBlock.h | 2 | ||||
-rw-r--r-- | Eigen/src/SparseCore/SparseCwiseBinaryOp.h | 6 | ||||
-rw-r--r-- | Eigen/src/SparseCore/SparseDenseProduct.h | 12 | ||||
-rw-r--r-- | Eigen/src/SparseCore/SparseDiagonalProduct.h | 4 | ||||
-rw-r--r-- | Eigen/src/SparseCore/SparseDot.h | 6 | ||||
-rw-r--r-- | Eigen/src/SparseCore/SparsePermutation.h | 8 | ||||
-rw-r--r-- | Eigen/src/SparseCore/SparseProduct.h | 5 | ||||
-rw-r--r-- | Eigen/src/SparseCore/SparseRedux.h | 2 | ||||
-rw-r--r-- | Eigen/src/SparseCore/SparseSelfAdjointView.h | 10 | ||||
-rw-r--r-- | Eigen/src/SparseCore/SparseSparseProductWithPruning.h | 4 | ||||
-rw-r--r-- | Eigen/src/SparseCore/SparseTriangularView.h | 2 | ||||
-rw-r--r-- | Eigen/src/SparseCore/SparseVector.h | 4 | ||||
-rw-r--r-- | Eigen/src/SparseCore/TriangularSolver.h | 8 |
15 files changed, 43 insertions, 46 deletions
diff --git a/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h b/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h index d25a161f7..6e664515d 100644 --- a/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +++ b/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h @@ -30,8 +30,8 @@ static void conservative_sparse_sparse_product_impl(const Lhs& lhs, const Rhs& r std::memset(mask,0,sizeof(bool)*rows); - typename evaluator<Lhs>::type lhsEval(lhs); - typename evaluator<Rhs>::type rhsEval(rhs); + evaluator<Lhs> lhsEval(lhs); + evaluator<Rhs> rhsEval(rhs); // estimate the number of non zero entries // given a rhs column containing Y non zeros, we assume that the respective Y columns diff --git a/Eigen/src/SparseCore/SparseAssign.h b/Eigen/src/SparseCore/SparseAssign.h index 9e8a31a45..e984bbdb3 100644 --- a/Eigen/src/SparseCore/SparseAssign.h +++ b/Eigen/src/SparseCore/SparseAssign.h @@ -70,8 +70,8 @@ template<typename DstXprType, typename SrcXprType> void assign_sparse_to_sparse(DstXprType &dst, const SrcXprType &src) { typedef typename DstXprType::Scalar Scalar; - typedef typename internal::evaluator<DstXprType>::type DstEvaluatorType; - typedef typename internal::evaluator<SrcXprType>::type SrcEvaluatorType; + typedef internal::evaluator<DstXprType> DstEvaluatorType; + typedef internal::evaluator<SrcXprType> SrcEvaluatorType; SrcEvaluatorType srcEvaluator(src); @@ -140,8 +140,8 @@ struct Assignment<DstXprType, SrcXprType, Functor, Sparse2Dense, Scalar> { eigen_assert(dst.rows() == src.rows() && dst.cols() == src.cols()); - typename internal::evaluator<SrcXprType>::type srcEval(src); - typename internal::evaluator<DstXprType>::type dstEval(dst); + internal::evaluator<SrcXprType> srcEval(src); + internal::evaluator<DstXprType> dstEval(dst); const Index outerEvaluationSize = (internal::evaluator<SrcXprType>::Flags&RowMajorBit) ? src.rows() : src.cols(); for (Index j=0; j<outerEvaluationSize; ++j) for (typename internal::evaluator<SrcXprType>::InnerIterator i(srcEval,j); i; ++i) @@ -157,8 +157,8 @@ struct Assignment<DstXprType, SrcXprType, internal::assign_op<typename DstXprTyp eigen_assert(dst.rows() == src.rows() && dst.cols() == src.cols()); dst.setZero(); - typename internal::evaluator<SrcXprType>::type srcEval(src); - typename internal::evaluator<DstXprType>::type dstEval(dst); + internal::evaluator<SrcXprType> srcEval(src); + internal::evaluator<DstXprType> dstEval(dst); const Index outerEvaluationSize = (internal::evaluator<SrcXprType>::Flags&RowMajorBit) ? src.rows() : src.cols(); for (Index j=0; j<outerEvaluationSize; ++j) for (typename internal::evaluator<SrcXprType>::InnerIterator i(srcEval,j); i; ++i) diff --git a/Eigen/src/SparseCore/SparseBlock.h b/Eigen/src/SparseCore/SparseBlock.h index 333cc6655..552bfca48 100644 --- a/Eigen/src/SparseCore/SparseBlock.h +++ b/Eigen/src/SparseCore/SparseBlock.h @@ -39,7 +39,7 @@ public: Index nonZeros() const
{
- typedef typename internal::evaluator<XprType>::type EvaluatorType;
+ typedef internal::evaluator<XprType> EvaluatorType;
EvaluatorType matEval(m_matrix);
Index nnz = 0;
Index end = m_outerStart + m_outerSize.value();
diff --git a/Eigen/src/SparseCore/SparseCwiseBinaryOp.h b/Eigen/src/SparseCore/SparseCwiseBinaryOp.h index 78d16892d..a4cc24e30 100644 --- a/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +++ b/Eigen/src/SparseCore/SparseCwiseBinaryOp.h @@ -238,7 +238,7 @@ struct binary_evaluator<CwiseBinaryOp<scalar_product_op<T>, Lhs, Rhs>, IndexBase { protected: typedef scalar_product_op<T> BinaryOp; - typedef typename evaluator<Lhs>::type LhsEvaluator; + typedef evaluator<Lhs> LhsEvaluator; typedef typename evaluator<Rhs>::InnerIterator RhsIterator; public: typedef CwiseBinaryOp<BinaryOp, Lhs, Rhs> XprType; @@ -307,7 +307,7 @@ struct binary_evaluator<CwiseBinaryOp<scalar_product_op<T>, Lhs, Rhs>, IteratorB protected: typedef scalar_product_op<T> BinaryOp; typedef typename evaluator<Lhs>::InnerIterator LhsIterator; - typedef typename evaluator<Rhs>::type RhsEvaluator; + typedef evaluator<Rhs> RhsEvaluator; public: typedef CwiseBinaryOp<BinaryOp, Lhs, Rhs> XprType; @@ -341,7 +341,7 @@ public: protected: LhsIterator m_lhsIter; - const RhsEvaluator &m_rhsEval; + const evaluator<Rhs> &m_rhsEval; const BinaryOp& m_functor; const Index m_outer; }; diff --git a/Eigen/src/SparseCore/SparseDenseProduct.h b/Eigen/src/SparseCore/SparseDenseProduct.h index 3e752ecd9..1a167445a 100644 --- a/Eigen/src/SparseCore/SparseDenseProduct.h +++ b/Eigen/src/SparseCore/SparseDenseProduct.h @@ -30,7 +30,7 @@ struct sparse_time_dense_product_impl<SparseLhsType,DenseRhsType,DenseResType, t typedef typename internal::remove_all<DenseRhsType>::type Rhs; typedef typename internal::remove_all<DenseResType>::type Res; typedef typename evaluator<Lhs>::InnerIterator LhsInnerIterator; - typedef typename evaluator<Lhs>::type LhsEval; + typedef evaluator<Lhs> LhsEval; static void run(const SparseLhsType& lhs, const DenseRhsType& rhs, DenseResType& res, const typename Res::Scalar& alpha) { LhsEval lhsEval(lhs); @@ -89,7 +89,7 @@ struct sparse_time_dense_product_impl<SparseLhsType,DenseRhsType,DenseResType, A typedef typename evaluator<Lhs>::InnerIterator LhsInnerIterator; static void run(const SparseLhsType& lhs, const DenseRhsType& rhs, DenseResType& res, const AlphaType& alpha) { - typename evaluator<Lhs>::type lhsEval(lhs); + evaluator<Lhs> lhsEval(lhs); for(Index c=0; c<rhs.cols(); ++c) { for(Index j=0; j<lhs.outerSize(); ++j) @@ -112,7 +112,7 @@ struct sparse_time_dense_product_impl<SparseLhsType,DenseRhsType,DenseResType, t typedef typename evaluator<Lhs>::InnerIterator LhsInnerIterator; static void run(const SparseLhsType& lhs, const DenseRhsType& rhs, DenseResType& res, const typename Res::Scalar& alpha) { - typename evaluator<Lhs>::type lhsEval(lhs); + evaluator<Lhs> lhsEval(lhs); for(Index j=0; j<lhs.outerSize(); ++j) { typename Res::RowXpr res_j(res.row(j)); @@ -131,7 +131,7 @@ struct sparse_time_dense_product_impl<SparseLhsType,DenseRhsType,DenseResType, t typedef typename evaluator<Lhs>::InnerIterator LhsInnerIterator; static void run(const SparseLhsType& lhs, const DenseRhsType& rhs, DenseResType& res, const typename Res::Scalar& alpha) { - typename evaluator<Lhs>::type lhsEval(lhs); + evaluator<Lhs> lhsEval(lhs); for(Index j=0; j<lhs.outerSize(); ++j) { typename Rhs::ConstRowXpr rhs_j(rhs.row(j)); @@ -213,8 +213,8 @@ protected: typedef typename conditional<is_same<typename internal::traits<Lhs1>::StorageKind,Sparse>::value, Lhs1 const&, SparseView<Lhs1> >::type LhsArg; - typedef typename evaluator<ActualLhs>::type LhsEval; - typedef typename evaluator<ActualRhs>::type RhsEval; + typedef evaluator<ActualLhs> LhsEval; + typedef evaluator<ActualRhs> RhsEval; typedef typename evaluator<ActualLhs>::InnerIterator LhsIterator; typedef typename ProdXprType::Scalar Scalar; diff --git a/Eigen/src/SparseCore/SparseDiagonalProduct.h b/Eigen/src/SparseCore/SparseDiagonalProduct.h index 13b2f07bd..4dec7d7cc 100644 --- a/Eigen/src/SparseCore/SparseDiagonalProduct.h +++ b/Eigen/src/SparseCore/SparseDiagonalProduct.h @@ -39,7 +39,6 @@ struct product_evaluator<Product<Lhs, Rhs, DefaultProduct>, ProductTag, Diagonal : public sparse_diagonal_product_evaluator<Rhs, typename Lhs::DiagonalVectorType, Rhs::Flags&RowMajorBit?SDP_AsScalarProduct:SDP_AsCwiseProduct> { typedef Product<Lhs, Rhs, DefaultProduct> XprType; - typedef evaluator<XprType> type; typedef evaluator<XprType> nestedType; enum { CoeffReadCost = Dynamic, Flags = Rhs::Flags&RowMajorBit, Alignment = 0 }; // FIXME CoeffReadCost & Flags @@ -52,7 +51,6 @@ struct product_evaluator<Product<Lhs, Rhs, DefaultProduct>, ProductTag, SparseSh : public sparse_diagonal_product_evaluator<Lhs, Transpose<const typename Rhs::DiagonalVectorType>, Lhs::Flags&RowMajorBit?SDP_AsCwiseProduct:SDP_AsScalarProduct> { typedef Product<Lhs, Rhs, DefaultProduct> XprType; - typedef evaluator<XprType> type; typedef evaluator<XprType> nestedType; enum { CoeffReadCost = Dynamic, Flags = Lhs::Flags&RowMajorBit, Alignment = 0 }; // FIXME CoeffReadCost & Flags @@ -126,7 +124,7 @@ struct sparse_diagonal_product_evaluator<SparseXprType, DiagCoeffType, SDP_AsCwi {} protected: - typename evaluator<SparseXprType>::type m_sparseXprEval; + evaluator<SparseXprType> m_sparseXprEval; DiagCoeffNested m_diagCoeffNested; }; diff --git a/Eigen/src/SparseCore/SparseDot.h b/Eigen/src/SparseCore/SparseDot.h index b10c8058f..38bc4aa9e 100644 --- a/Eigen/src/SparseCore/SparseDot.h +++ b/Eigen/src/SparseCore/SparseDot.h @@ -26,7 +26,7 @@ SparseMatrixBase<Derived>::dot(const MatrixBase<OtherDerived>& other) const eigen_assert(size() == other.size()); eigen_assert(other.size()>0 && "you are using a non initialized vector"); - typename internal::evaluator<Derived>::type thisEval(derived()); + internal::evaluator<Derived> thisEval(derived()); typename internal::evaluator<Derived>::InnerIterator i(thisEval, 0); Scalar res(0); while (i) @@ -50,10 +50,10 @@ SparseMatrixBase<Derived>::dot(const SparseMatrixBase<OtherDerived>& other) cons eigen_assert(size() == other.size()); - typename internal::evaluator<Derived>::type thisEval(derived()); + internal::evaluator<Derived> thisEval(derived()); typename internal::evaluator<Derived>::InnerIterator i(thisEval, 0); - typename internal::evaluator<OtherDerived>::type otherEval(other.derived()); + internal::evaluator<OtherDerived> otherEval(other.derived()); typename internal::evaluator<OtherDerived>::InnerIterator j(otherEval, 0); Scalar res(0); diff --git a/Eigen/src/SparseCore/SparsePermutation.h b/Eigen/src/SparseCore/SparsePermutation.h index 7b5eb4c22..d63607b6c 100644 --- a/Eigen/src/SparseCore/SparsePermutation.h +++ b/Eigen/src/SparseCore/SparsePermutation.h @@ -91,11 +91,11 @@ template <int ProductTag> struct product_promote_storage_type<PermutationStorage template<typename Lhs, typename Rhs, int ProductTag> struct product_evaluator<Product<Lhs, Rhs, AliasFreeProduct>, ProductTag, PermutationShape, SparseShape, typename traits<Lhs>::Scalar, typename traits<Rhs>::Scalar> - : public evaluator<typename permutation_matrix_product<Rhs,OnTheRight,false,SparseShape>::ReturnType>::type + : public evaluator<typename permutation_matrix_product<Rhs,OnTheRight,false,SparseShape>::ReturnType> { typedef Product<Lhs, Rhs, AliasFreeProduct> XprType; typedef typename permutation_matrix_product<Rhs,OnTheRight,false,SparseShape>::ReturnType PlainObject; - typedef typename evaluator<PlainObject>::type Base; + typedef evaluator<PlainObject> Base; explicit product_evaluator(const XprType& xpr) : m_result(xpr.rows(), xpr.cols()) @@ -110,11 +110,11 @@ protected: template<typename Lhs, typename Rhs, int ProductTag> struct product_evaluator<Product<Lhs, Rhs, AliasFreeProduct>, ProductTag, SparseShape, PermutationShape, typename traits<Lhs>::Scalar, typename traits<Rhs>::Scalar> - : public evaluator<typename permutation_matrix_product<Lhs,OnTheRight,false,SparseShape>::ReturnType>::type + : public evaluator<typename permutation_matrix_product<Lhs,OnTheRight,false,SparseShape>::ReturnType> { typedef Product<Lhs, Rhs, AliasFreeProduct> XprType; typedef typename permutation_matrix_product<Lhs,OnTheRight,false,SparseShape>::ReturnType PlainObject; - typedef typename evaluator<PlainObject>::type Base; + typedef evaluator<PlainObject> Base; explicit product_evaluator(const XprType& xpr) : m_result(xpr.rows(), xpr.cols()) diff --git a/Eigen/src/SparseCore/SparseProduct.h b/Eigen/src/SparseCore/SparseProduct.h index c62386ed1..c2131fd9d 100644 --- a/Eigen/src/SparseCore/SparseProduct.h +++ b/Eigen/src/SparseCore/SparseProduct.h @@ -63,13 +63,12 @@ struct generic_product_impl<Lhs, Rhs, SparseTriangularShape, SparseShape, Produc template<typename Lhs, typename Rhs, int Options> struct evaluator<SparseView<Product<Lhs, Rhs, Options> > > - : public evaluator<typename Product<Lhs, Rhs, DefaultProduct>::PlainObject>::type + : public evaluator<typename Product<Lhs, Rhs, DefaultProduct>::PlainObject> { typedef SparseView<Product<Lhs, Rhs, Options> > XprType; typedef typename XprType::PlainObject PlainObject; - typedef typename evaluator<PlainObject>::type Base; + typedef evaluator<PlainObject> Base; - typedef evaluator type; typedef evaluator nestedType; explicit evaluator(const XprType& xpr) diff --git a/Eigen/src/SparseCore/SparseRedux.h b/Eigen/src/SparseCore/SparseRedux.h index 763f2296b..50ebb2e53 100644 --- a/Eigen/src/SparseCore/SparseRedux.h +++ b/Eigen/src/SparseCore/SparseRedux.h @@ -18,7 +18,7 @@ SparseMatrixBase<Derived>::sum() const { eigen_assert(rows()>0 && cols()>0 && "you are using a non initialized matrix"); Scalar res(0); - typename internal::evaluator<Derived>::type thisEval(derived()); + internal::evaluator<Derived> thisEval(derived()); for (Index j=0; j<outerSize(); ++j) for (typename internal::evaluator<Derived>::InnerIterator iter(thisEval,j); iter; ++iter) res += iter.value(); diff --git a/Eigen/src/SparseCore/SparseSelfAdjointView.h b/Eigen/src/SparseCore/SparseSelfAdjointView.h index dec96efb5..b0c2e472e 100644 --- a/Eigen/src/SparseCore/SparseSelfAdjointView.h +++ b/Eigen/src/SparseCore/SparseSelfAdjointView.h @@ -255,7 +255,7 @@ inline void sparse_selfadjoint_time_dense_product(const SparseLhsType& lhs, cons // TODO use alpha eigen_assert(alpha==AlphaType(1) && "alpha != 1 is not implemented yet, sorry"); - typedef typename evaluator<SparseLhsType>::type LhsEval; + typedef evaluator<SparseLhsType> LhsEval; typedef typename evaluator<SparseLhsType>::InnerIterator LhsIterator; typedef typename SparseLhsType::Scalar LhsScalar; @@ -337,11 +337,11 @@ struct generic_product_impl<Lhs, RhsView, DenseShape, SparseSelfAdjointShape, Pr template<typename LhsView, typename Rhs, int ProductTag> struct product_evaluator<Product<LhsView, Rhs, DefaultProduct>, ProductTag, SparseSelfAdjointShape, SparseShape, typename traits<LhsView>::Scalar, typename traits<Rhs>::Scalar> - : public evaluator<typename Product<typename Rhs::PlainObject, Rhs, DefaultProduct>::PlainObject>::type + : public evaluator<typename Product<typename Rhs::PlainObject, Rhs, DefaultProduct>::PlainObject> { typedef Product<LhsView, Rhs, DefaultProduct> XprType; typedef typename XprType::PlainObject PlainObject; - typedef typename evaluator<PlainObject>::type Base; + typedef evaluator<PlainObject> Base; product_evaluator(const XprType& xpr) : m_lhs(xpr.lhs()), m_result(xpr.rows(), xpr.cols()) @@ -357,11 +357,11 @@ protected: template<typename Lhs, typename RhsView, int ProductTag> struct product_evaluator<Product<Lhs, RhsView, DefaultProduct>, ProductTag, SparseShape, SparseSelfAdjointShape, typename traits<Lhs>::Scalar, typename traits<RhsView>::Scalar> - : public evaluator<typename Product<Lhs, typename Lhs::PlainObject, DefaultProduct>::PlainObject>::type + : public evaluator<typename Product<Lhs, typename Lhs::PlainObject, DefaultProduct>::PlainObject> { typedef Product<Lhs, RhsView, DefaultProduct> XprType; typedef typename XprType::PlainObject PlainObject; - typedef typename evaluator<PlainObject>::type Base; + typedef evaluator<PlainObject> Base; product_evaluator(const XprType& xpr) : m_rhs(xpr.rhs()), m_result(xpr.rows(), xpr.cols()) diff --git a/Eigen/src/SparseCore/SparseSparseProductWithPruning.h b/Eigen/src/SparseCore/SparseSparseProductWithPruning.h index 48050077e..20078f72c 100644 --- a/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +++ b/Eigen/src/SparseCore/SparseSparseProductWithPruning.h @@ -39,8 +39,8 @@ static void sparse_sparse_product_with_pruning_impl(const Lhs& lhs, const Rhs& r else res.resize(rows, cols); - typename evaluator<Lhs>::type lhsEval(lhs); - typename evaluator<Rhs>::type rhsEval(rhs); + evaluator<Lhs> lhsEval(lhs); + evaluator<Rhs> rhsEval(rhs); // estimate the number of non zero entries // given a rhs column containing Y non zeros, we assume that the respective Y columns diff --git a/Eigen/src/SparseCore/SparseTriangularView.h b/Eigen/src/SparseCore/SparseTriangularView.h index 0e6c01531..9871e4b2b 100644 --- a/Eigen/src/SparseCore/SparseTriangularView.h +++ b/Eigen/src/SparseCore/SparseTriangularView.h @@ -269,7 +269,7 @@ public: }; protected: - typename evaluator<ArgType>::type m_argImpl; + evaluator<ArgType> m_argImpl; }; } // end namespace internal diff --git a/Eigen/src/SparseCore/SparseVector.h b/Eigen/src/SparseCore/SparseVector.h index 13add55f7..68d3fe4fa 100644 --- a/Eigen/src/SparseCore/SparseVector.h +++ b/Eigen/src/SparseCore/SparseVector.h @@ -457,7 +457,7 @@ template< typename Dest, typename Src> struct sparse_vector_assign_selector<Dest,Src,SVA_Inner> { static void run(Dest& dst, const Src& src) { eigen_internal_assert(src.innerSize()==src.size()); - typedef typename internal::evaluator<Src>::type SrcEvaluatorType; + typedef internal::evaluator<Src> SrcEvaluatorType; SrcEvaluatorType srcEval(src); for(typename SrcEvaluatorType::InnerIterator it(srcEval, 0); it; ++it) dst.insert(it.index()) = it.value(); @@ -468,7 +468,7 @@ template< typename Dest, typename Src> struct sparse_vector_assign_selector<Dest,Src,SVA_Outer> { static void run(Dest& dst, const Src& src) { eigen_internal_assert(src.outerSize()==src.size()); - typedef typename internal::evaluator<Src>::type SrcEvaluatorType; + typedef internal::evaluator<Src> SrcEvaluatorType; SrcEvaluatorType srcEval(src); for(Index i=0; i<src.size(); ++i) { diff --git a/Eigen/src/SparseCore/TriangularSolver.h b/Eigen/src/SparseCore/TriangularSolver.h index 8872012db..19f8f6704 100644 --- a/Eigen/src/SparseCore/TriangularSolver.h +++ b/Eigen/src/SparseCore/TriangularSolver.h @@ -28,7 +28,7 @@ template<typename Lhs, typename Rhs, int Mode> struct sparse_solve_triangular_selector<Lhs,Rhs,Mode,Lower,RowMajor> { typedef typename Rhs::Scalar Scalar; - typedef typename evaluator<Lhs>::type LhsEval; + typedef evaluator<Lhs> LhsEval; typedef typename evaluator<Lhs>::InnerIterator LhsIterator; static void run(const Lhs& lhs, Rhs& other) { @@ -65,7 +65,7 @@ template<typename Lhs, typename Rhs, int Mode> struct sparse_solve_triangular_selector<Lhs,Rhs,Mode,Upper,RowMajor> { typedef typename Rhs::Scalar Scalar; - typedef typename evaluator<Lhs>::type LhsEval; + typedef evaluator<Lhs> LhsEval; typedef typename evaluator<Lhs>::InnerIterator LhsIterator; static void run(const Lhs& lhs, Rhs& other) { @@ -104,7 +104,7 @@ template<typename Lhs, typename Rhs, int Mode> struct sparse_solve_triangular_selector<Lhs,Rhs,Mode,Lower,ColMajor> { typedef typename Rhs::Scalar Scalar; - typedef typename evaluator<Lhs>::type LhsEval; + typedef evaluator<Lhs> LhsEval; typedef typename evaluator<Lhs>::InnerIterator LhsIterator; static void run(const Lhs& lhs, Rhs& other) { @@ -139,7 +139,7 @@ template<typename Lhs, typename Rhs, int Mode> struct sparse_solve_triangular_selector<Lhs,Rhs,Mode,Upper,ColMajor> { typedef typename Rhs::Scalar Scalar; - typedef typename evaluator<Lhs>::type LhsEval; + typedef evaluator<Lhs> LhsEval; typedef typename evaluator<Lhs>::InnerIterator LhsIterator; static void run(const Lhs& lhs, Rhs& other) { |