#include template <> void print(const bool b) { printf("%s", b ? "true" : "false"); } template <> void print(char* x) { printf("%s", x); } template <> void print(void* x) { printf("%p", x); } template <> void print(const char* x) { printf("%s", x); } template <> void print(const char x) { printf("%c", x); } template <> void print(const signed char x) { printf("%hhi", x); } template <> void print(const unsigned char x) { printf("%hhuU", x); } template <> void print(const signed short x) { printf("%hi", x); } template <> void print(const unsigned short x) { printf("%huU", x); } template <> void print(const signed int x) { printf("%i", x); } template <> void print(const unsigned int x) { printf("%uU", x); } template <> void print(const signed long x) { printf("%liL", x); } template <> void print(const unsigned long x) { printf("%luUL", x); } template <> void print(const float x) { printf("%gf", x); } template <> void print(const double x) { printf("%lf", x); }