Commit be9356b6 authored by Victor Zverovich's avatar Victor Zverovich

Specialize MakeUnsigned for all signed integer types.

parent d81fafc2
...@@ -424,13 +424,16 @@ struct IntTraits { ...@@ -424,13 +424,16 @@ struct IntTraits {
template <typename T> template <typename T>
struct MakeUnsigned { typedef T Type; }; struct MakeUnsigned { typedef T Type; };
#define SPECIALIZE_MAKE_UNSIGNED(T) \ #define SPECIALIZE_MAKE_UNSIGNED(T, U) \
template <> \ template <> \
struct MakeUnsigned<signed T> { typedef unsigned T Type; } struct MakeUnsigned<T> { typedef U Type; }
SPECIALIZE_MAKE_UNSIGNED(char); SPECIALIZE_MAKE_UNSIGNED(char, unsigned char);
SPECIALIZE_MAKE_UNSIGNED(short); SPECIALIZE_MAKE_UNSIGNED(signed char, unsigned char);
SPECIALIZE_MAKE_UNSIGNED(long); SPECIALIZE_MAKE_UNSIGNED(short, unsigned short);
SPECIALIZE_MAKE_UNSIGNED(int, unsigned);
SPECIALIZE_MAKE_UNSIGNED(long, unsigned long);
SPECIALIZE_MAKE_UNSIGNED(LongLong, ULongLong);
template <typename T> template <typename T>
struct IsLongDouble { enum {VALUE = 0}; }; struct IsLongDouble { enum {VALUE = 0}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment