#include <iostream>
#include <typeinfo>

template <typename T>
char const * type_name()
{
	return typeid(T).name();
}

int main() {
	int a[10];
	
	std::cout << "type name for int[10]: " << type_name<int[10]>() << std::endl
	          << "type name for int*:    " << type_name<int*>() << std::endl
	          << std::endl
			  << " a is " << type_name<decltype(a)>() << std::endl
	          << "+a is " << type_name<decltype(+a)>() << std::endl;
	
	return 0;
}