diff --git a/Eigen/src/Core/CoreEvaluators.h b/Eigen/src/Core/CoreEvaluators.h index 1d4ef8032..cc8477598 100644 --- a/Eigen/src/Core/CoreEvaluators.h +++ b/Eigen/src/Core/CoreEvaluators.h @@ -793,10 +793,12 @@ protected: // evaluator_impl_wrapper_base is a common base class for the // MatrixWrapper and ArrayWrapper evaluators. -template +template struct evaluator_impl_wrapper_base - : evaluator_impl_base + : evaluator_impl_base { + typedef typename remove_all::type ArgType; + evaluator_impl_wrapper_base(const ArgType& arg) : m_argImpl(arg) {} typedef typename ArgType::Index Index; @@ -855,23 +857,23 @@ protected: template struct evaluator_impl > - : evaluator_impl_wrapper_base + : evaluator_impl_wrapper_base > { typedef MatrixWrapper XprType; evaluator_impl(const XprType& wrapper) - : evaluator_impl_wrapper_base(wrapper.nestedExpression()) + : evaluator_impl_wrapper_base >(wrapper.nestedExpression()) { } }; template struct evaluator_impl > - : evaluator_impl_wrapper_base + : evaluator_impl_wrapper_base > { typedef ArrayWrapper XprType; evaluator_impl(const XprType& wrapper) - : evaluator_impl_wrapper_base(wrapper.nestedExpression()) + : evaluator_impl_wrapper_base >(wrapper.nestedExpression()) { } };