diff --git a/Eigen/src/Core/MapBase.h b/Eigen/src/Core/MapBase.h index 20103408b..5bdf59fbc 100644 --- a/Eigen/src/Core/MapBase.h +++ b/Eigen/src/Core/MapBase.h @@ -173,16 +173,18 @@ template class MapBase using Base::operator=; using Base::operator*=; - using Base::operator+=; - using Base::operator-=; -// template -// Derived& operator+=(const Flagged, 0, EvalBeforeNestingBit | EvalBeforeAssigningBit>& other) -// { return Base::operator+=(other); } -// -// template -// Derived& operator-=(const Flagged, 0, EvalBeforeNestingBit | EvalBeforeAssigningBit>& other) -// { return Base::operator-=(other); } + // FIXME it seems VS does not allow to do "using Base::operator+=" + // and to overload operator+= at the same time, therefore we have to + // explicitly add these two overloads. + // Maye their exists a better solution though. + template + Derived& operator+=(const Flagged, 0, EvalBeforeNestingBit | EvalBeforeAssigningBit>& other) + { return Base::operator+=(other); } + + template + Derived& operator-=(const Flagged, 0, EvalBeforeNestingBit | EvalBeforeAssigningBit>& other) + { return Base::operator-=(other); } template Derived& operator+=(const MatrixBase& other)