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" );
503 template<
typename MT1
506 inline typename RowExprTrait< DMatDMatAddExpr<MT1,MT2,SO> >::Type
507 row(
const DMatDMatAddExpr<MT1,MT2,SO>& dm,
size_t index )
511 return row( dm.leftOperand(), index ) +
row( dm.rightOperand(), index );
529 template<
typename MT1
532 inline typename ColumnExprTrait< DMatDMatAddExpr<MT1,MT2,SO> >::Type
533 column(
const DMatDMatAddExpr<MT1,MT2,SO>& dm,
size_t index )
537 return column( dm.leftOperand(), index ) +
column( dm.rightOperand(), index );
553 template<
typename MT1,
typename MT2,
bool SO >
554 struct RowExprTrait< DMatDMatAddExpr<MT1,MT2,SO> >
558 typedef typename AddExprTrait< typename RowExprTrait<const MT1>::Type
559 ,
typename RowExprTrait<const MT2>::Type >::Type Type;
568 template<
typename MT1,
typename MT2,
bool SO >
569 struct ColumnExprTrait< DMatDMatAddExpr<MT1,MT2,SO> >
573 typedef typename AddExprTrait< typename ColumnExprTrait<const MT1>::Type
574 ,
typename ColumnExprTrait<const MT2>::Type >::Type Type;