#include <iostream>

template <typename T>
struct is_pointer_type
{
    enum { value = false };
};

template <typename T>
struct is_pointer_type<T*>
{
    enum { value = true };
};

template <typename T>
bool is_pointer(const T&)
{
    return is_pointer_type<T>::value;
} 

class A{};

int main()
{
	A a;
	A* aptr;
	std::cout << is_pointer(a) << '\n' << is_pointer(aptr) << '\n';
}