Шаблоны не работают так. В вашем шаблоне T
указывается тип, а не последовательность токенов:
typedef int lolztype;
typedef int lulztype;
function_foo<lolztype>(0, 0);
function_foo<lulztype>(0, 0); // calls the *same* template
Нет способа получить lolztype
или lulztype
соответственно. Что вы можете попробовать, так это использовать typeid(T).name()
, но это не очень полезно, потому что не требуется, чтобы он был удобочитаемым для человека, и даже не требуется, чтобы он отличался для каждого типа.
Вы можете попробовать использовать файл Георди type_strings.hpp
, который может распечатать читаемую человеком строку при компиляции с GCC.