#include <iostream>
#include <utility>
template<class T>
std::enable_if_t<std::is_fundamental<std::remove_reference_t<T>>::value> reset(T&&)
{
std::cout << 1 << std::endl;
}
template<class T>
std::enable_if_t<std::is_pointer<std::remove_reference_t<T>>::value> reset(T&&)
{
std::cout << 2 << std::endl;
}
template<class T>
std::enable_if_t<std::is_array<std::remove_reference_t<T>>::value> reset(T&&)
{
std::cout << 3 << std::endl;
}
int main()
{
int nRetCode = 0;
char mass[10];
char *pmass=mass;
reset(mass);
reset(pmass);
reset(nRetCode);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dXRpbGl0eT4KCnRlbXBsYXRlPGNsYXNzIFQ+CnN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19mdW5kYW1lbnRhbDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj46OnZhbHVlPiByZXNldChUJiYpCnsKCXN0ZDo6Y291dCA8PCAxIDw8IHN0ZDo6ZW5kbDsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4Kc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3BvaW50ZXI8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+Ojp2YWx1ZT4gcmVzZXQoVCYmKQp7CglzdGQ6OmNvdXQgPDwgMiA8PCBzdGQ6OmVuZGw7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CnN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcnJheTxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj46OnZhbHVlPiByZXNldChUJiYpCnsKCXN0ZDo6Y291dCA8PCAzIDw8IHN0ZDo6ZW5kbDsKfQoKaW50IG1haW4oKQp7CgogICAgaW50IG5SZXRDb2RlID0gMDsKICAgIAogICAgY2hhciBtYXNzWzEwXTsKICAgIGNoYXIgKnBtYXNzPW1hc3M7CgogICAgcmVzZXQobWFzcyk7CiAgICByZXNldChwbWFzcyk7CiAgICByZXNldChuUmV0Q29kZSk7ICAgIAp9