22 #ifndef _BLAZE_MATH_EXPRESSIONS_TSVECDVECMULTEXPR_H_
23 #define _BLAZE_MATH_EXPRESSIONS_TSVECDVECMULTEXPR_H_
31 #include <boost/type_traits/remove_reference.hpp>
82 inline const typename MultTrait<typename T1::ElementType,typename T2::ElementType>::Type
85 using boost::remove_reference;
87 typedef typename T1::CompositeType Lhs;
88 typedef typename T2::CompositeType Rhs;
89 typedef typename remove_reference<Lhs>::type X1;
90 typedef typename remove_reference<Rhs>::type X2;
91 typedef typename X1::ElementType ET1;
92 typedef typename X2::ElementType ET2;
94 typedef typename X1::ConstIterator ConstIterator;
101 if( (~lhs).size() != (~rhs).size() )
102 throw std::invalid_argument(
"Vector sizes do not match" );
104 if( (~lhs).nonZeros() == 0UL )
return MultType();
109 ConstIterator element( left.begin() );
110 MultType sp( element->value() * right[ element->index() ] );
113 for( ; element!=left.end(); ++element )
114 sp += element->value() * right[ element->index() ];