Blaze 3.9
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
43#include <utility>
44
45
46namespace blaze {
47
48//=================================================================================================
49//
50// CLASS DEFINITION
51//
52//=================================================================================================
53
54//*************************************************************************************************
56template< typename, typename, typename = void > struct SchurTrait;
57template< typename, typename, typename = void > struct SchurTraitEval1;
58template< typename, typename, typename = void > struct SchurTraitEval2;
60//*************************************************************************************************
61
62
63//*************************************************************************************************
65template< typename T1, typename T2 >
66auto evalSchurTrait( const volatile T1&, const volatile T2& ) -> SchurTraitEval1<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 : decltype( evalSchurTrait( 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 SchurTraitEval1
150 : public SchurTraitEval2<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 SchurTraitEval2
165{};
167//*************************************************************************************************
168
169} // namespace blaze
170
171#endif
typename SchurTrait< T1, T2 >::Type SchurTrait_t
Auxiliary alias declaration for the SchurTrait class template.
Definition: SchurTrait.h:137
Base template for the SchurTrait class.
Definition: SchurTrait.h:119