fork download
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <type_traits>
  4.  
  5. template<size_t N> struct X : X<N - 1> {};
  6. template<> struct X<0> {};
  7.  
  8. template<size_t N>
  9. struct Y : X<N - 1> {};
  10.  
  11. int main()
  12. {
  13. std::cout << std::boolalpha;
  14. std::cout << std::is_base_of<X<0>, Y<10>>::value << "\n";
  15. std::cout << std::is_base_of<X<1>, Y<10>>::value << "\n";
  16. std::cout << std::is_base_of<X<2>, Y<10>>::value << "\n";
  17. std::cout << std::is_base_of<X<3>, Y<10>>::value << "\n";
  18. std::cout << std::is_base_of<X<4>, Y<10>>::value << "\n";
  19. std::cout << std::is_base_of<X<5>, Y<10>>::value << "\n";
  20. std::cout << std::is_base_of<X<6>, Y<10>>::value << "\n";
  21. std::cout << std::is_base_of<X<7>, Y<10>>::value << "\n";
  22. std::cout << std::is_base_of<X<8>, Y<10>>::value << "\n";
  23. std::cout << std::is_base_of<X<9>, Y<10>>::value << "\n";
  24. std::cout << std::is_base_of<X<10>, Y<10>>::value << "\n";
  25. }
  26.  
Success #stdin #stdout 0s 2852KB
stdin
Standard input is empty
stdout
true
true
true
true
true
true
true
true
true
true
false