Blaze 3.9
ColumnTrait.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_TRAITS_COLUMNTRAIT_H_
36#define _BLAZE_MATH_TRAITS_COLUMNTRAIT_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 ColumnTrait;
59template< typename, size_t, typename = void > struct ColumnTraitEval1;
60template< typename, size_t, typename = void > struct ColumnTraitEval2;
62//*************************************************************************************************
63
64
65//*************************************************************************************************
67template< size_t I, typename T >
68auto evalColumnTrait( const volatile T& ) -> ColumnTraitEval1<T,I>;
69
70template< typename T >
71auto evalColumnTrait( const volatile T& ) -> ColumnTraitEval1<T,inf>;
73//*************************************************************************************************
74
75
76//*************************************************************************************************
121template< typename MT // Type of the matrix
122 , size_t... CCAs > // Compile time column arguments
124 : public decltype( evalColumnTrait<CCAs...>( std::declval<MT&>() ) )
125{};
126//*************************************************************************************************
127
128
129//*************************************************************************************************
142template< typename MT // Type of the matrix
143 , size_t... CCAs > // Compile time column arguments
144using ColumnTrait_t = typename ColumnTrait<MT,CCAs...>::Type;
145//*************************************************************************************************
146
147
148//*************************************************************************************************
153template< typename MT // Type of the matrix
154 , size_t I // Compile time column index
155 , typename > // Restricting condition
156struct ColumnTraitEval1
157 : public ColumnTraitEval2<MT,I>
158{};
160//*************************************************************************************************
161
162
163//*************************************************************************************************
168template< typename MT // Type of the matrix
169 , size_t I // Compile time column index
170 , typename > // Restricting condition
171struct ColumnTraitEval2
172{};
174//*************************************************************************************************
175
176} // namespace blaze
177
178#endif
Numerical infinity for built-in data types.
typename ColumnTrait< MT, CCAs... >::Type ColumnTrait_t
Auxiliary alias declaration for the ColumnTrait type trait.
Definition: ColumnTrait.h:144
Base template for the ColumnTrait class.
Definition: ColumnTrait.h:125
Header file for basic type definitions.