Blaze 3.9
SolveTrait.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_TRAITS_SOLVETRAIT_H_
36#define _BLAZE_MATH_TRAITS_SOLVETRAIT_H_
37
38
39//*************************************************************************************************
40// Includes
41//*************************************************************************************************
42
43#include <utility>
45
46
47namespace blaze {
48
49//=================================================================================================
50//
51// CLASS DEFINITION
52//
53//=================================================================================================
54
55//*************************************************************************************************
57template< typename, typename, typename = void > struct SolveTrait;
58template< typename, typename, typename = void > struct SolveTraitEval1;
59template< typename, typename, typename = void > struct SolveTraitEval2;
61//*************************************************************************************************
62
63
64//*************************************************************************************************
66template< typename T1, typename T2 >
67auto evalSolveTrait( const volatile T1&, const volatile T2& ) -> SolveTraitEval1<T1,T2>;
69//*************************************************************************************************
70
71
72//*************************************************************************************************
115template< typename T1 // Type of the left-hand side operand
116 , typename T2 // Type of the right-hand side operand
117 , typename > // Restricting condition
119 : public decltype( evalSolveTrait( std::declval<T1&>(), std::declval<T2&>() ) )
120{};
121//*************************************************************************************************
122
123
124//*************************************************************************************************
137template< typename T1, typename T2 >
139//*************************************************************************************************
140
141
142//*************************************************************************************************
147template< typename T1 // Type of the left-hand side operand
148 , typename T2 // Type of the right-hand side operand
149 , typename > // Restricting condition
150struct SolveTraitEval1
151 : public SolveTraitEval2<T1,T2>
152{};
154//*************************************************************************************************
155
156
157//*************************************************************************************************
162template< typename T1 // Type of the left-hand side operand
163 , typename T2 // Type of the right-hand side operand
164 , typename > // Restricting condition
165struct SolveTraitEval2
166{};
168//*************************************************************************************************
169
170} // namespace blaze
171
172#endif
Utility type for generic codes.
typename SolveTrait< T1, T2 >::Type SolveTrait_t
Auxiliary alias declaration for the SolveTrait class template.
Definition: SolveTrait.h:138
Base template for the SolveTrait class.
Definition: SolveTrait.h:120