В текущей норме C ++ вы не можете получить тип переменных, по крайней мере, без специфических для компилятора вещей (но попробуйте boost::typeof
, который собирает эти трюки прозрачным способом).
То, что вы написали, это в основном шаблон, который удаляет квалификатор указателя из типа: type_of<int>::type
is int
as is type_of<int*>::type
.