fork download
  1. #include <iostream>
  2. #include <type_traits>
  3.  
  4. template <typename c1, typename c2, typename c3>
  5. struct Config{};
  6.  
  7. struct x{};
  8. struct y{};
  9. struct z{};
  10.  
  11. struct a{};
  12. struct b{};
  13. struct c{};
  14.  
  15. using CONFIG1 = Config<x, y, z>;
  16. using CONFIG2 = Config<a, b, c>;
  17. //using CONFIG3 = Config<x, y, z>;
  18. struct CONFIG3 : CONFIG1{};
  19.  
  20. template <class CONFIG>
  21. struct MyClass{};
  22.  
  23. template <>
  24. struct MyClass<CONFIG1>{};
  25.  
  26. template <>
  27. struct MyClass<CONFIG2>{};
  28.  
  29. template <>
  30. struct MyClass<CONFIG3>{};
  31.  
  32.  
  33. int main() {
  34. std::cout << std::boolalpha;
  35. std::cout << std::is_same<CONFIG1, CONFIG3>::value << std::endl;
  36. return 0;
  37. }
Success #stdin #stdout 0s 3096KB
stdin
Standard input is empty
stdout
false