Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
blaze
math
traits
TDVecDVecMultExprTrait.h
Go to the documentation of this file.
1
//=================================================================================================
20
//=================================================================================================
21
22
#ifndef _BLAZE_MATH_TRAITS_TDVECDVECMULTEXPRTRAIT_H_
23
#define _BLAZE_MATH_TRAITS_TDVECDVECMULTEXPRTRAIT_H_
24
25
26
//*************************************************************************************************
27
// Includes
28
//*************************************************************************************************
29
30
#include <
blaze/math/traits/MultTrait.h
>
31
#include <
blaze/math/typetraits/IsDenseVector.h
>
32
#include <
blaze/math/typetraits/IsTransposeVector.h
>
33
#include <
blaze/util/InvalidType.h
>
34
#include <
blaze/util/SelectType.h
>
35
#include <
blaze/util/typetraits/IsConst.h
>
36
#include <
blaze/util/typetraits/IsReference.h
>
37
#include <
blaze/util/typetraits/IsVolatile.h
>
38
#include <
blaze/util/typetraits/RemoveCV.h
>
39
#include <
blaze/util/typetraits/RemoveReference.h
>
40
41
42
namespace
blaze {
43
44
//=================================================================================================
45
//
46
// CLASS DEFINITION
47
//
48
//=================================================================================================
49
50
//*************************************************************************************************
55
template
<
typename
VT1
56
,
typename
VT2
57
,
bool
Valid >
58
struct
TDVecDVecMultExprTraitHelper
59
{
60
//**********************************************************************************************
61
typedef
INVALID_TYPE Type;
62
//**********************************************************************************************
63
};
65
//*************************************************************************************************
66
67
68
//*************************************************************************************************
73
template
<
typename
VT1
74
,
typename
VT2 >
75
struct
TDVecDVecMultExprTraitHelper<VT1,VT2,true>
76
{
77
//**********************************************************************************************
78
typedef
typename
MultTrait<typename VT1::ElementType,typename VT2::ElementType>::Type Type;
79
//**********************************************************************************************
80
};
82
//*************************************************************************************************
83
84
85
//*************************************************************************************************
96
template
<
typename
VT1
// Type of the left-hand side transpose dense vector
97
,
typename
VT2 >
// Type of the right-hand side non-transpose dense vector
98
struct
TDVecDVecMultExprTrait
99
{
100
private
:
101
//**********************************************************************************************
103
enum
{ qualified =
IsConst<VT1>::value
||
IsVolatile<VT1>::value
||
IsReference<VT1>::value
||
104
IsConst<VT2>::value
||
IsVolatile<VT2>::value
||
IsReference<VT2>::value
};
105
106
enum
{ valid =
IsDenseVector<VT1>::value
&&
IsTransposeVector<VT1>::value
&&
107
IsDenseVector<VT2>::value
&& !
IsTransposeVector<VT2>::value
};
109
//**********************************************************************************************
110
111
//**********************************************************************************************
113
typedef
TDVecDVecMultExprTraitHelper<VT1,VT2,valid> Tmp;
114
115
typedef
typename
RemoveReference< typename RemoveCV<VT1>::Type
>::Type Type1;
116
typedef
typename
RemoveReference< typename RemoveCV<VT2>::Type
>::Type Type2;
118
//**********************************************************************************************
119
120
public
:
121
//**********************************************************************************************
123
typedef
typename
SelectType< qualified, TDVecDVecMultExprTrait<Type1,Type2>
, Tmp >::Type::Type Type;
125
//**********************************************************************************************
126
};
127
//*************************************************************************************************
128
129
}
// namespace blaze
130
131
#endif
Generated on Fri May 24 2013 16:39:56 by
1.8.3.1