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  }; };