3 #ifndef DUNE_DOTPRODUCT_HH
4 #define DUNE_DOTPRODUCT_HH
28 template<
class T,
class =
void>
42 template<
class A,
class B>
44 dot(
const A & a,
const B & b) {
58 template<
class A,
class B>
59 inline typename enable_if<!IsVector<A>::value && is_same<typename FieldTraits<A>::field_type,
typename FieldTraits<A>::real_type>::value,
typename PromotionTraits<A,B>::PromotedType>::type
60 dot(
const A & a,
const B & b) {
74 template<
typename A,
typename B>
76 inline typename enable_if<IsVector<A>::value,
typename PromotionTraits<typename A::field_type, typename B::field_type >::PromotedType>::type
77 dot(
const A & a,
const B & b) {
89 template<
class A,
class B>
90 inline typename enable_if<!IsVector<A>::value && !is_same<typename FieldTraits<A>::field_type,
typename FieldTraits<A>::real_type> ::value,
typename PromotionTraits<A,B>::PromotedType>::type
91 dotT(
const A & a,
const B & b) {
102 template<
class A,
class B>
103 inline typename enable_if<IsVector<A>::value,
typename PromotionTraits<typename A::field_type, typename B::field_type >::PromotedType>::type
104 dotT(
const A & a,
const B & b) {
111 #endif // DUNE_DOTPRODUCT_HH