fork download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct A {};
  6. struct B {};
  7. struct C {};
  8.  
  9. template <typename T>
  10. struct getID;
  11.  
  12. template <>
  13. struct getID<A>
  14. {
  15. constexpr static int ID = 1;
  16. };
  17.  
  18. template <>
  19. struct getID<B>
  20. {
  21. constexpr static int ID = 2;
  22. };
  23.  
  24. template <>
  25. struct getID<C>
  26. {
  27. constexpr static int ID = 3;
  28. };
  29.  
  30. template<typename T>
  31. void testID(T val)
  32. {
  33. cout << getID<T>::ID << endl;
  34. }
  35.  
  36. int main()
  37. {
  38. testID(A{});
  39. testID(B{});
  40. testID(C{});
  41.  
  42. return 0;
  43. }
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
1
2
3