#include <cstddef>
#include <type_traits>
#include <iostream>
template<class T, std::size_t sz>
inline void reset(T(&x)[sz] )
{
std::cout << "array\n";
}
template<class T>
inline typename std::enable_if<std::is_pointer<T>::value, void>::type reset(T x)
{
std::cout << "pointer\n";
}
template<class T>
inline typename std::enable_if<!std::is_pointer<T>::value, void>::type reset(T& x)
{
std::cout << "reference\n";
}
int main(int argc, const char* argv[], const char* envp[])
{
int nRetCode = 0;
char mass[10];
char *pmass=mass;
reset(mass);
reset(pmass);
reset(nRetCode);
return nRetCode;
}
I2luY2x1ZGUgPGNzdGRkZWY+CiNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8Y2xhc3MgVCwgc3RkOjpzaXplX3Qgc3o+CmlubGluZSB2b2lkIHJlc2V0KFQoJngpW3N6XSApCnsKCXN0ZDo6Y291dCA8PCAiYXJyYXlcbiI7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlLCB2b2lkPjo6dHlwZSByZXNldChUIHgpCnsKCXN0ZDo6Y291dCA8PCAicG9pbnRlclxuIjsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlLCB2b2lkPjo6dHlwZSByZXNldChUJiB4KQp7CglzdGQ6OmNvdXQgPDwgInJlZmVyZW5jZVxuIjsKfQoKaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSwgY29uc3QgY2hhciogZW52cFtdKQp7CiAgICBpbnQgblJldENvZGUgPSAwOwogICAgCiAgICBjaGFyIG1hc3NbMTBdOwogICAgY2hhciAqcG1hc3M9bWFzczsKCgogICAgcmVzZXQobWFzcyk7CiAgICByZXNldChwbWFzcyk7CiAgICByZXNldChuUmV0Q29kZSk7ICAgIAogICAgcmV0dXJuIG5SZXRDb2RlOwp9