Blaze 3.9
ElementsTrait.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_TRAITS_ELEMENTSTRAIT_H_
36#define _BLAZE_MATH_TRAITS_ELEMENTSTRAIT_H_
37
38
39//*************************************************************************************************
40// Includes
41//*************************************************************************************************
42
43#include <utility>
44#include <blaze/util/Types.h>
45
46
47namespace blaze {
48
49//=================================================================================================
50//
51// CLASS DEFINITION
52//
53//=================================================================================================
54
55//*************************************************************************************************
57template< typename, size_t > struct ElementsTrait;
58template< typename, size_t, typename = void > struct ElementsTraitEval1;
59template< typename, size_t, typename = void > struct ElementsTraitEval2;
61//*************************************************************************************************
62
63
64//*************************************************************************************************
66template< size_t N, typename T >
67auto evalElementsTrait( const volatile T& ) -> ElementsTraitEval1<T,N>;
69//*************************************************************************************************
70
71
72//*************************************************************************************************
117template< typename VT // Type of the vector
118 , size_t N > // Number of compile time indices
120 : public decltype( evalElementsTrait<N>( std::declval<VT&>() ) )
121{};
122//*************************************************************************************************
123
124
125//*************************************************************************************************
138template< typename VT // Type of the vector
139 , size_t N > // Number of compile time indices
141//*************************************************************************************************
142
143
144//*************************************************************************************************
149template< typename VT // Type of the vector
150 , size_t N // Number of compile time indices
151 , typename > // Restricting condition
152struct ElementsTraitEval1
153 : public ElementsTraitEval2<VT,N>
154{};
156//*************************************************************************************************
157
158
159//*************************************************************************************************
164template< typename VT // Type of the vector
165 , size_t N // Number of compile time indices
166 , typename > // Restricting condition
167struct ElementsTraitEval2
168{};
170//*************************************************************************************************
171
172} // namespace blaze
173
174#endif
typename ElementsTrait< VT, N >::Type ElementsTrait_t
Auxiliary alias declaration for the ElementsTrait type trait.
Definition: ElementsTrait.h:140
Base template for the ElementsTrait class.
Definition: ElementsTrait.h:121
Header file for basic type definitions.