#include <iostream>
using namespace std;
template<typename T>
struct IsPointer
{
enum{ value= false };
};
template<typename T>
struct IsPointer<T*>
{
enum{ value= true };
};
template <typename T>
bool isPointer(T notused)
{
return IsPointer<T>::value;
}
int main()
{
int v= 10;
int *p = new int;
std::cout << std::boolalpha;
std::cout << isPointer(v) <<std::endl;
std::cout << isPointer(p) <<std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kc3RydWN0IElzUG9pbnRlcgp7CiAgIGVudW17IHZhbHVlPSBmYWxzZSB9OyAKfTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnN0cnVjdCBJc1BvaW50ZXI8VCo+CnsKICAgZW51bXsgdmFsdWU9IHRydWUgfTsKfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpib29sIGlzUG9pbnRlcihUIG5vdHVzZWQpCnsKICByZXR1cm4gSXNQb2ludGVyPFQ+Ojp2YWx1ZTsKfQoKaW50IG1haW4oKSAKewoJaW50ICB2PSAxMDsKCWludCAqcCA9IG5ldyBpbnQ7CiAJCiAgICBzdGQ6OmNvdXQgPDwgc3RkOjpib29sYWxwaGE7CiAgICBzdGQ6OmNvdXQgPDwgaXNQb2ludGVyKHYpIDw8c3RkOjplbmRsOwoJc3RkOjpjb3V0IDw8IGlzUG9pbnRlcihwKSA8PHN0ZDo6ZW5kbDsKCQoJcmV0dXJuIDA7Cn0=