Blaze 3.9
CrossTrait.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_TRAITS_CROSSTRAIT_H_
36#define _BLAZE_MATH_TRAITS_CROSSTRAIT_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 CrossTrait;
57template< typename, typename, typename = void > struct CrossTraitEval1;
58template< typename, typename, typename = void > struct CrossTraitEval2;
60//*************************************************************************************************
61
62
63//*************************************************************************************************
65template< typename T1, typename T2 >
66auto evalCrossTrait( const volatile T1&, const volatile T2& ) -> CrossTraitEval1<T1,T2>;
68//*************************************************************************************************
69
70
71//*************************************************************************************************
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( evalCrossTrait( 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 CrossTraitEval1
151 : public CrossTraitEval2<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 CrossTraitEval2
166{};
168//*************************************************************************************************
169
170} // namespace blaze
171
172#endif
typename CrossTrait< T1, T2 >::Type CrossTrait_t
Auxiliary alias declaration for the CrossTrait class template.
Definition: CrossTrait.h:138
Base template for the CrossTrait class.
Definition: CrossTrait.h:120