22 #ifndef _BLAZE_MATH_EXPRESSIONS_DVECDVECSUBEXPR_H_
23 #define _BLAZE_MATH_EXPRESSIONS_DVECDVECSUBEXPR_H_
68 template<
typename VT1
77 typedef typename VT1::ResultType
RT1;
78 typedef typename VT2::ResultType
RT2;
79 typedef typename VT1::ReturnType
RN1;
80 typedef typename VT2::ReturnType
RN2;
81 typedef typename VT1::CompositeType
CT1;
82 typedef typename VT2::CompositeType
CT2;
83 typedef typename VT1::ElementType
ET1;
84 typedef typename VT2::ElementType
ET2;
112 template<
typename VT >
114 enum { value = useAssign };
142 enum { vectorizable = VT1::vectorizable && VT2::vectorizable &&
179 inline IntrinsicType
get(
size_t index )
const {
183 const IntrinsicType xmm1(
lhs_.get( index ) );
184 const IntrinsicType xmm2(
rhs_.get( index ) );
225 template<
typename T >
238 template<
typename T >
240 return (
lhs_.isAliased( alias ) ||
rhs_.isAliased( alias ) );
264 template<
typename VT >
297 template<
typename VT >
309 const ResultType tmp( rhs );
329 template<
typename VT >
330 friend inline typename EnableIf< UseAssign<VT> >::Type
361 template<
typename VT >
362 friend inline typename EnableIf< UseAssign<VT> >::Type
393 template<
typename VT >
394 friend inline typename EnableIf< UseAssign<VT> >::Type
405 const ResultType tmp( rhs );
459 template<
typename T1
462 inline const DVecDVecSubExpr<T1,T2,TF>
467 if( (~lhs).
size() != (~rhs).
size() )
468 throw std::invalid_argument(
"Vector sizes do not match" );