#include <typeinfo>
#include <iostream>
using namespace std;
class White {};
class Black {};
// template <typename T>
// void printType(typename std::enable_if<is_class<T>::value, T>::type t)
// {
// cout << "name=" << typeid(t).name() << ", hash_code=" << typeid(t).hash_code() << endl;
// }
template <typename T>
void printType(std::enable_if_t<std::is_class<T>::value, T> t)
{
std::cout << "name=" << typeid(t).name() << ", hash_code=" << typeid(t).hash_code() << std::endl;
}
void typeidTest()
{
White a, c;
Black b;
cout << "a.name=" << typeid(a).name() << ", a.hash_code=" << typeid(a).hash_code() << endl;
cout << "b.name=" << typeid(b).name() << ", b.hash_code=" << typeid(b).hash_code() << endl;
printType<White>(a);
printType<White>(c);
printType<Black>(b);
// int x = 1;
// printType<int>(x);
struct s{};
s y;
printType<s>(y);
}