Blaze 3.9
DeclUniUppTrait.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_TRAITS_DECLUNIUPPTRAIT_H_
36#define _BLAZE_MATH_TRAITS_DECLUNIUPPTRAIT_H_
37
38
39//*************************************************************************************************
40// Includes
41//*************************************************************************************************
42
43#include <utility>
47#include <blaze/util/EnableIf.h>
48
49
50namespace blaze {
51
52//=================================================================================================
53//
54// CLASS DEFINITION
55//
56//=================================================================================================
57
58//*************************************************************************************************
60template< typename > struct DeclUniUppTrait;
61template< typename, typename = void > struct DeclUniUppTraitEval;
63//*************************************************************************************************
64
65
66//*************************************************************************************************
68template< typename T >
69auto evalDeclUniUppTrait( const volatile T& ) -> DeclUniUppTraitEval<T>;
71//*************************************************************************************************
72
73
74//*************************************************************************************************
125template< typename MT > // Type of the matrix
127 : public decltype( evalDeclUniUppTrait( std::declval<MT&>() ) )
128{};
129//*************************************************************************************************
130
131
132//*************************************************************************************************
145template< typename MT > // Type of the matrix
147//*************************************************************************************************
148
149
150//*************************************************************************************************
155template< typename MT // Type of the matrix
156 , typename > // Restricting condition
157struct DeclUniUppTraitEval
158{};
160//*************************************************************************************************
161
162
163//*************************************************************************************************
168template< typename MT > // Type of the matrix
169struct DeclUniUppTraitEval< MT
170 , EnableIf_t< IsMatrix_v<MT> &&
171 ( Size_v<MT,0UL> == DefaultSize_v ||
172 Size_v<MT,1UL> == DefaultSize_v ||
173 Size_v<MT,0UL> == Size_v<MT,1UL> ) > >
174{
175 using Type = UniUpperMatrix<typename MT::ResultType>;
176};
178//*************************************************************************************************
179
180} // namespace blaze
181
182#endif
Header file for the EnableIf class template.
Header file for the IsMatrix type trait.
Header file for the implementation of the base template of the UniUpperMatrix.
typename DeclUniUppTrait< MT >::Type DeclUniUppTrait_t
Auxiliary alias declaration for the DeclUniUppTrait type trait.
Definition: DeclUniUppTrait.h:146
constexpr ptrdiff_t DefaultSize_v
Default size of the Size type trait.
Definition: Size.h:72
constexpr bool IsMatrix_v
Auxiliary variable template for the IsMatrix type trait.
Definition: IsMatrix.h:124
typename EnableIf< Condition, T >::Type EnableIf_t
Auxiliary type for the EnableIf class template.
Definition: EnableIf.h:138
Header file for the Size type trait.
Base template for the DeclUniUppTrait class.
Definition: DeclUniUppTrait.h:128