Blaze 3.9
DeclHermTrait.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_TRAITS_DECLHERMTRAIT_H_
36#define _BLAZE_MATH_TRAITS_DECLHERMTRAIT_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 DeclHermTrait;
61template< typename, typename = void > struct DeclHermTraitEval;
63//*************************************************************************************************
64
65
66//*************************************************************************************************
68template< typename T >
69auto evalDeclHermTrait( const volatile T& ) -> DeclHermTraitEval<T>;
71//*************************************************************************************************
72
73
74//*************************************************************************************************
123template< typename MT > // Type of the matrix
125 : public decltype( evalDeclHermTrait( std::declval<MT&>() ) )
126{};
127//*************************************************************************************************
128
129
130//*************************************************************************************************
143template< typename MT > // Type of the matrix
145//*************************************************************************************************
146
147
148//*************************************************************************************************
153template< typename MT // Type of the matrix
154 , typename > // Restricting condition
155struct DeclHermTraitEval
156{};
158//*************************************************************************************************
159
160
161//*************************************************************************************************
166template< typename MT > // Type of the matrix
167struct DeclHermTraitEval< MT
168 , EnableIf_t< IsMatrix_v<MT> &&
169 ( Size_v<MT,0UL> == DefaultSize_v ||
170 Size_v<MT,1UL> == DefaultSize_v ||
171 Size_v<MT,0UL> == Size_v<MT,1UL> ) > >
172{
173 using Type = HermitianMatrix<typename MT::ResultType>;
174};
176//*************************************************************************************************
177
178} // namespace blaze
179
180#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 HeritianMatrix.
typename DeclHermTrait< MT >::Type DeclHermTrait_t
Auxiliary alias declaration for the DeclHermTrait type trait.
Definition: DeclHermTrait.h:144
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 DeclHermTrait class.
Definition: DeclHermTrait.h:126