113 |
|
|
114 |
template<typename T> |
template<typename T> |
115 |
bool IsEnum(const T& data) { |
bool IsEnum(const T& data) { |
116 |
|
#if __cplusplus < 201103L |
117 |
|
return std::is_enum<T>::value; |
118 |
|
#else |
119 |
return __is_enum(T); |
return __is_enum(T); |
120 |
|
#endif |
121 |
} |
} |
122 |
|
|
123 |
template<typename T> |
template<typename T> |
124 |
bool IsUnion(const T& data) { |
bool IsUnion(const T& data) { |
125 |
|
#if __cplusplus < 201103L |
126 |
|
return std::is_union<T>::value; |
127 |
|
#else |
128 |
return __is_union(T); |
return __is_union(T); |
129 |
|
#endif |
130 |
} |
} |
131 |
|
|
132 |
template<typename T> |
template<typename T> |
133 |
bool IsClass(const T& data) { |
bool IsClass(const T& data) { |
134 |
|
#if __cplusplus < 201103L |
135 |
|
return std::is_class<T>::value; |
136 |
|
#else |
137 |
return __is_class(T); |
return __is_class(T); |
138 |
|
#endif |
139 |
} |
} |
140 |
|
|
141 |
/*template<typename T> |
/*template<typename T> |