All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Rank.h
Go to the documentation of this file.
1 //=================================================================================================
20 //=================================================================================================
21 
22 #ifndef _BLAZE_UTIL_TYPETRAITS_RANK_H_
23 #define _BLAZE_UTIL_TYPETRAITS_RANK_H_
24 
25 
26 //*************************************************************************************************
27 // Includes
28 //*************************************************************************************************
29 
30 #include <blaze/util/FalseType.h>
31 #include <blaze/util/TrueType.h>
32 
33 
34 namespace blaze {
35 
36 //=================================================================================================
37 //
38 // CLASS DEFINITION
39 //
40 //=================================================================================================
41 
42 //*************************************************************************************************
59 template< typename T >
60 struct Rank
61 {
62  public:
63  //**********************************************************************************************
65  enum { value = 0 };
67  //**********************************************************************************************
68 };
69 //*************************************************************************************************
70 
71 
72 //*************************************************************************************************
74 
75 template< typename T >
76 struct Rank<T[]>
77 {
78  public:
79  //**********************************************************************************************
80  enum { value = 1 + Rank<T>::value };
81  //**********************************************************************************************
82 };
84 //*************************************************************************************************
85 
86 
87 //*************************************************************************************************
89 
90 template< typename T, unsigned int N >
91 struct Rank<T[N]>
92 {
93  public:
94  //**********************************************************************************************
95  enum { value = 1 + Rank<T>::value };
96  //**********************************************************************************************
97 };
99 //*************************************************************************************************
100 
101 } // namespace blaze
102 
103 #endif