Blaze 3.9
KronTrait.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_TRAITS_KRONTRAIT_H_
36#define _BLAZE_MATH_TRAITS_KRONTRAIT_H_
37
38
39//*************************************************************************************************
40// Includes
41//*************************************************************************************************
42
43#include <utility>
44
45
46namespace blaze {
47
48//=================================================================================================
49//
50// CLASS DEFINITION
51//
52//=================================================================================================
53
54//*************************************************************************************************
56template< typename, typename, typename = void > struct KronTrait;
57template< typename, typename, typename = void > struct KronTraitEval1;
58template< typename, typename, typename = void > struct KronTraitEval2;
60//*************************************************************************************************
61
62
63//*************************************************************************************************
65template< typename T1, typename T2 >
66auto evalKronTrait( const volatile T1&, const volatile T2& ) -> KronTraitEval1<T1,T2>;
68//*************************************************************************************************
69
70
71//*************************************************************************************************
114template< typename T1 // Type of the left-hand side operand
115 , typename T2 // Type of the right-hand side operand
116 , typename > // Restricting condition
118 : public decltype( evalKronTrait( std::declval<T1&>(), std::declval<T2&>() ) )
119{};
120//*************************************************************************************************
121
122
123//*************************************************************************************************
136template< typename T1, typename T2 >
138//*************************************************************************************************
139
140
141//*************************************************************************************************
146template< typename T1 // Type of the left-hand side operand
147 , typename T2 // Type of the right-hand side operand
148 , typename > // Restricting condition
149struct KronTraitEval1
150 : public KronTraitEval2<T1,T2>
151{};
153//*************************************************************************************************
154
155
156//*************************************************************************************************
161template< typename T1 // Type of the left-hand side operand
162 , typename T2 // Type of the right-hand side operand
163 , typename > // Restricting condition
164struct KronTraitEval2
165{};
167//*************************************************************************************************
168
169} // namespace blaze
170
171#endif
typename KronTrait< T1, T2 >::Type KronTrait_t
Auxiliary alias declaration for the KronTrait class template.
Definition: KronTrait.h:137
Base template for the KronTrait class.
Definition: KronTrait.h:119