Listing 5: Macro for types that can be signed/unsigned.
#define DEFINE_FUNDAMENTAL_958DEC24_DCB9_4EEC_9FA4_86B73473EFFE(TYPE) \
template<> struct is_fundamental<signed TYPE> \
{ enum { value = true }; }; \
template<> struct is_fundamental<const signed TYPE> \
{ enum { value = true }; }; \
template<> struct is_fundamental<volatile signed TYPE> \
{ enum { value = true }; }; \
template<> struct is_fundamental<const volatile signed TYPE> \
{ enum { value = true }; }; \
template<> struct is_fundamental<unsigned TYPE> \
{ enum { value = true }; }; \
template<> struct is_fundamental<const unsigned TYPE> \
{ enum { value = true }; }; \
template<> struct is_fundamental<volatile unsigned TYPE> \
{ enum { value = true }; }; \
template<> struct is_fundamental<const volatile unsigned TYPE> \
{ enum { value = true }; };