#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;
}
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZWluZm8+Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KY2hhciBjb25zdCAqIHR5cGVfbmFtZSgpCnsKCXJldHVybiB0eXBlaWQoVCkubmFtZSgpOwp9CgppbnQgbWFpbigpIHsKCWludCBhWzEwXTsKCQoJc3RkOjpjb3V0IDw8ICJ0eXBlIG5hbWUgZm9yIGludFsxMF06ICIgPDwgdHlwZV9uYW1lPGludFsxMF0+KCkgPDwgc3RkOjplbmRsCgkgICAgICAgICAgPDwgInR5cGUgbmFtZSBmb3IgaW50KjogICAgIiA8PCB0eXBlX25hbWU8aW50Kj4oKSA8PCBzdGQ6OmVuZGwKCSAgICAgICAgICA8PCBzdGQ6OmVuZGwKCQkJICA8PCAiIGEgaXMgIiA8PCB0eXBlX25hbWU8ZGVjbHR5cGUoYSk+KCkgPDwgc3RkOjplbmRsCgkgICAgICAgICAgPDwgIithIGlzICIgPDwgdHlwZV9uYW1lPGRlY2x0eXBlKCthKT4oKSA8PCBzdGQ6OmVuZGw7CgkKCXJldHVybiAwOwp9