SchurTrait.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_MATH_TRAITS_SCHURTRAIT_H_
36 #define _BLAZE_MATH_TRAITS_SCHURTRAIT_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
46 #include <blaze/util/EnableIf.h>
47 #include <blaze/util/InvalidType.h>
48 #include <blaze/util/mpl/And.h>
49 #include <blaze/util/mpl/If.h>
50 #include <blaze/util/mpl/Not.h>
51 #include <blaze/util/mpl/Or.h>
56 
57 
58 namespace blaze {
59 
60 //=================================================================================================
61 //
62 // CLASS DEFINITION
63 //
64 //=================================================================================================
65 
66 //*************************************************************************************************
109 template< typename T1 // Type of the left-hand side operand
110  , typename T2 // Type of the right-hand side operand
111  , typename = void > // Restricting condition
113 {
114  private:
115  //**********************************************************************************************
117  struct Failure { using Type = INVALID_TYPE; };
119  //**********************************************************************************************
120 
121  public:
122  //**********************************************************************************************
124  using Type = typename If_< Or< IsConst<T1>, IsVolatile<T1>, IsReference<T1>
127  , Failure >::Type;
129  //**********************************************************************************************
130 };
131 //*************************************************************************************************
132 
133 
134 //*************************************************************************************************
140 template< typename T1, typename T2 >
141 struct SchurTrait< T1, T2
142  , EnableIf_< And< Or< IsCustom<T1>, IsInitializer<T1>, IsView<T1> >
143  , Not< Or< IsCustom<T2>, IsInitializer<T2>, IsView<T2> > > > > >
144 {
145  public:
146  //**********************************************************************************************
148  //**********************************************************************************************
149 };
151 //*************************************************************************************************
152 
153 
154 //*************************************************************************************************
160 template< typename T1, typename T2 >
161 struct SchurTrait< T1, T2
162  , EnableIf_< And< Not< Or< IsCustom<T1>, IsInitializer<T1>, IsView<T1> > >
163  , Or< IsCustom<T2>, IsInitializer<T2>, IsView<T2> > > > >
164 {
165  public:
166  //**********************************************************************************************
168  //**********************************************************************************************
169 };
171 //*************************************************************************************************
172 
173 
174 //*************************************************************************************************
180 template< typename T1, typename T2 >
181 struct SchurTrait< T1, T2
182  , EnableIf_< And< Or< IsCustom<T1>, IsInitializer<T1>, IsView<T1> >
183  , Or< IsCustom<T2>, IsInitializer<T2>, IsView<T2> > > > >
184 {
185  public:
186  //**********************************************************************************************
188  //**********************************************************************************************
189 };
191 //*************************************************************************************************
192 
193 
194 //*************************************************************************************************
207 template< typename T1, typename T2 >
209 //*************************************************************************************************
210 
211 } // namespace blaze
212 
213 #endif
Header file for the IsInitializer type trait.
Compile time check for volatile data types.The IsVolatile type trait tests whether or not the given t...
Definition: IsVolatile.h:75
Base template for the SchurTrait class.
Definition: SchurTrait.h:112
typename Decay< T >::Type Decay_
Auxiliary alias declaration for the Decay type trait.The Decay_ alias declaration provides a convenie...
Definition: Decay.h:98
Header file for the And class template.
Header file for the IsVolatile type trait.
Header file for the Decay type trait.
Header file for the IsCustom type trait.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
Header file for the If class template.
Header file for the Or class template.
Header file for the Not class template.
typename SchurTrait< T1, T2 >::Type SchurTrait_
Auxiliary alias declaration for the SchurTrait class template.The SchurTrait_ alias declaration provi...
Definition: SchurTrait.h:208
Header file for the EnableIf class template.
Header file for the IsView type trait.
Header file for the IsConst type trait.
Utility type for generic codes.
typename If< T1, T2, T3 >::Type If_
Auxiliary alias declaration for the If class template.The If_ alias declaration provides a convenient...
Definition: If.h:154
Header file for the IsReference type trait.
Compile time check for constant data types.The IsConst type trait tests whether or not the given temp...
Definition: IsConst.h:75
Compile time type check.This class tests whether the given template parameter T is a reference type (...
Definition: IsReference.h:75