#include <iostream>
#include <typeinfo>

class A {};
class B {};
class C {};

template<typename T> 
std::size_t constexpr getID() { return typeid(T).hash_code(); }

template<std::size_t N>
struct FF
{
	
};

int main()
{
    std::cout << getID<A>() << std::endl;
    std::cout << getID<B>() << std::endl;
    std::cout << getID<C>() << std::endl;

    return 0;
}