diff options
Diffstat (limited to 'Eigen/src/Core/CwiseBinaryOp.h')
-rw-r--r-- | Eigen/src/Core/CwiseBinaryOp.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/Eigen/src/Core/CwiseBinaryOp.h b/Eigen/src/Core/CwiseBinaryOp.h index 6e158fdf1..3593e07d6 100644 --- a/Eigen/src/Core/CwiseBinaryOp.h +++ b/Eigen/src/Core/CwiseBinaryOp.h @@ -45,8 +45,19 @@ * \sa MatrixBase::binaryExpr(const MatrixBase<OtherDerived> &,const CustomBinaryOp &) const, class CwiseUnaryOp, class CwiseNullaryOp */ template<typename BinaryOp, typename Lhs, typename Rhs> -struct ei_traits<CwiseBinaryOp<BinaryOp, Lhs, Rhs> > : ei_traits<Lhs> +struct ei_traits<CwiseBinaryOp<BinaryOp, Lhs, Rhs> > { + // we must not inherit from ei_traits<Lhs> since it incurrs + // the potential to cause problems with MSVC + typedef typename ei_cleantype<Lhs>::type Ancestor; + typedef typename ei_traits<Ancestor>::XprKind XprKind; + enum { + RowsAtCompileTime = ei_traits<Ancestor>::RowsAtCompileTime, + ColsAtCompileTime = ei_traits<Ancestor>::ColsAtCompileTime, + MaxRowsAtCompileTime = ei_traits<Ancestor>::MaxRowsAtCompileTime, + MaxColsAtCompileTime = ei_traits<Ancestor>::MaxColsAtCompileTime + }; + // even though we require Lhs and Rhs to have the same scalar type (see CwiseBinaryOp constructor), // we still want to handle the case when the result type is different. typedef typename ei_result_of< |