Blaze 3.9
RowTrait.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_TRAITS_ROWTRAIT_H_
36#define _BLAZE_MATH_TRAITS_ROWTRAIT_H_
37
38
39//*************************************************************************************************
40// Includes
41//*************************************************************************************************
42
43#include <utility>
44#include <blaze/math/Infinity.h>
45#include <blaze/util/Types.h>
46
47
48namespace blaze {
49
50//=================================================================================================
51//
52// CLASS DEFINITION
53//
54//=================================================================================================
55
56//*************************************************************************************************
58template< typename, size_t... > struct RowTrait;
59template< typename, size_t, typename = void > struct RowTraitEval1;
60template< typename, size_t, typename = void > struct RowTraitEval2;
62//*************************************************************************************************
63
64
65//*************************************************************************************************
67template< size_t I, typename T >
68auto evalRowTrait( const volatile T& ) -> RowTraitEval1<T,I>;
69
70template< typename T >
71auto evalRowTrait( const volatile T& ) -> RowTraitEval1<T,inf>;
73//*************************************************************************************************
74
75
76//*************************************************************************************************
121template< typename MT // Type of the matrix
122 , size_t... CRAs > // Compile time row arguments
124 : public decltype( evalRowTrait<CRAs...>( std::declval<MT&>() ) )
125{};
126//*************************************************************************************************
127
128
129//*************************************************************************************************
142template< typename MT // Type of the matrix
143 , size_t... CRAs > // Compile time row arguments
144using RowTrait_t = typename RowTrait<MT,CRAs...>::Type;
145//*************************************************************************************************
146
147
148//*************************************************************************************************
153template< typename MT // Type of the matrix
154 , size_t I // Compile time row index
155 , typename > // Restricting condition
156struct RowTraitEval1
157 : public RowTraitEval2<MT,I>
158{};
160//*************************************************************************************************
161
162
163//*************************************************************************************************
168template< typename MT // Type of the matrix
169 , size_t I // Compile time row index
170 , typename > // Restricting condition
171struct RowTraitEval2
172{};
174//*************************************************************************************************
175
176} // namespace blaze
177
178#endif
Numerical infinity for built-in data types.
typename RowTrait< MT, CRAs... >::Type RowTrait_t
Auxiliary alias declaration for the RowTrait type trait.
Definition: RowTrait.h:144
Base template for the RowTrait class.
Definition: RowTrait.h:125
Header file for basic type definitions.