diff --git a/Eigen/src/Array/Array.h b/Eigen/src/Array/Array.h index 4bcbf7747..5f4f5a373 100644 --- a/Eigen/src/Array/Array.h +++ b/Eigen/src/Array/Array.h @@ -53,12 +53,24 @@ class Array using Base::base; using Base::coeff; using Base::coeffRef; - using Base::operator=; + using Base::operator+=; using Base::operator-=; using Base::operator*=; using Base::operator/=; + /** + * The usage of + * using Base::operator=; + * fails on MSVC. Since the code below is working with GCC and MSVC, we skipped + * the usage of 'using'. This should be done only for operator=. + */ + template + EIGEN_STRONG_INLINE Array& operator=(const AnyMatrixBase &other) + { + return Base::operator=(other); + } + /** Copies the value of the expression \a other into \c *this with automatic resizing. * * *this might be resized to match the dimensions of \a other. If *this was a null matrix (not already initialized), diff --git a/Eigen/src/Core/Product.h b/Eigen/src/Core/Product.h index 9e1875941..400ff06f3 100644 --- a/Eigen/src/Core/Product.h +++ b/Eigen/src/Core/Product.h @@ -135,8 +135,8 @@ struct ProductReturnType template struct ProductReturnType { - typedef typename ei_nested >::type LhsNested; - typedef typename ei_nested >::type RhsNested; + typedef typename ei_nested::type >::type LhsNested; + typedef typename ei_nested::type >::type RhsNested; typedef GeneralProduct Type; };