diff --git a/format.h b/format.h index 9be7319e..c02736ab 100644 --- a/format.h +++ b/format.h @@ -424,13 +424,16 @@ struct IntTraits { template struct MakeUnsigned { typedef T Type; }; -#define SPECIALIZE_MAKE_UNSIGNED(T) \ +#define SPECIALIZE_MAKE_UNSIGNED(T, U) \ template <> \ - struct MakeUnsigned { typedef unsigned T Type; } + struct MakeUnsigned { typedef U Type; } -SPECIALIZE_MAKE_UNSIGNED(char); -SPECIALIZE_MAKE_UNSIGNED(short); -SPECIALIZE_MAKE_UNSIGNED(long); +SPECIALIZE_MAKE_UNSIGNED(char, unsigned char); +SPECIALIZE_MAKE_UNSIGNED(signed char, unsigned char); +SPECIALIZE_MAKE_UNSIGNED(short, unsigned short); +SPECIALIZE_MAKE_UNSIGNED(int, unsigned); +SPECIALIZE_MAKE_UNSIGNED(long, unsigned long); +SPECIALIZE_MAKE_UNSIGNED(LongLong, ULongLong); template struct IsLongDouble { enum {VALUE = 0}; };