22 #ifndef _BLAZE_MATH_EXPRESSIONS_DMATDMATSUBEXPR_H_
23 #define _BLAZE_MATH_EXPRESSIONS_DMATDMATSUBEXPR_H_
69 template<
typename MT1
78 typedef typename MT1::ResultType
RT1;
79 typedef typename MT2::ResultType
RT2;
80 typedef typename MT1::ReturnType
RN1;
81 typedef typename MT2::ReturnType
RN2;
82 typedef typename MT1::CompositeType
CT1;
83 typedef typename MT2::CompositeType
CT2;
84 typedef typename MT1::ElementType
ET1;
85 typedef typename MT2::ElementType
ET2;
113 template<
typename VT >
115 enum { value = useAssign };
144 enum { vectorizable = MT1::vectorizable && MT2::vectorizable &&
213 return lhs_.columns();
243 template<
typename T >
256 template<
typename T >
258 return (
lhs_.isAliased( alias ) ||
rhs_.isAliased( alias ) );
282 template<
typename MT
317 template<
typename MT
336 const TmpType tmp( rhs );
356 template<
typename MT
358 friend inline typename EnableIf< UseAssign<MT> >::Type
390 template<
typename MT
392 friend inline typename EnableIf< UseAssign<MT> >::Type
461 template<
typename T1
464 inline const DMatDMatSubExpr<T1,T2,SO>
470 throw std::invalid_argument(
"Matrix sizes do not match" );
487 template<
typename MT1,
typename MT2,
bool SO >
488 struct RowExprTrait< DMatDMatSubExpr<MT1,MT2,SO> >
492 typedef typename SubExprTrait< typename RowExprTrait<const MT1>::Type
493 ,
typename RowExprTrait<const MT2>::Type >::Type Type;
502 template<
typename MT1,
typename MT2,
bool SO >
503 struct ColumnExprTrait< DMatDMatSubExpr<MT1,MT2,SO> >
507 typedef typename SubExprTrait< typename ColumnExprTrait<const MT1>::Type
508 ,
typename ColumnExprTrait<const MT2>::Type >::Type Type;