22 #ifndef _BLAZE_MATH_EXPRESSIONS_DMATDMATADDEXPR_H_
23 #define _BLAZE_MATH_EXPRESSIONS_DMATDMATADDEXPR_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
320 template<
typename MT
339 const TmpType tmp( rhs );
359 template<
typename MT
361 friend inline typename EnableIf< UseAssign<MT> >::Type
393 template<
typename MT
395 friend inline typename EnableIf< UseAssign<MT> >::Type
467 template<
typename T1
470 inline const DMatDMatAddExpr<T1,T2,SO>
476 throw std::invalid_argument(
"Matrix sizes do not match" );
493 template<
typename MT1,
typename MT2,
bool SO >
494 struct RowExprTrait< DMatDMatAddExpr<MT1,MT2,SO> >
498 typedef typename AddExprTrait< typename RowExprTrait<const MT1>::Type
499 ,
typename RowExprTrait<const MT2>::Type >::Type Type;
508 template<
typename MT1,
typename MT2,
bool SO >
509 struct ColumnExprTrait< DMatDMatAddExpr<MT1,MT2,SO> >
513 typedef typename AddExprTrait< typename ColumnExprTrait<const MT1>::Type
514 ,
typename ColumnExprTrait<const MT2>::Type >::Type Type;