#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