123 |
template<typename T> |
template<typename T> |
124 |
bool IsUnion(const T& data) { |
bool IsUnion(const T& data) { |
125 |
#if __cplusplus < 201103L |
#if __cplusplus < 201103L |
126 |
return std::tr1::is_union<T>::value; |
return false; // without compiler support we cannot distinguish union from class |
127 |
#else |
#else |
128 |
return __is_union(T); |
return __is_union(T); |
129 |
#endif |
#endif |
132 |
template<typename T> |
template<typename T> |
133 |
bool IsClass(const T& data) { |
bool IsClass(const T& data) { |
134 |
#if __cplusplus < 201103L |
#if __cplusplus < 201103L |
135 |
return std::tr1::is_class<T>::value; |
return std::tr1::__is_union_or_class<T>::value; // without compiler support we cannot distinguish union from class |
136 |
#else |
#else |
137 |
return __is_class(T); |
return __is_class(T); |
138 |
#endif |
#endif |