fork(1) download
  1. #include <iostream>
  2.  
  3. struct A { };
  4. struct B : public A { typedef A Base; };
  5. struct C : public B {};
  6.  
  7. template<typename T>
  8. struct to_void
  9. {
  10. typedef void type;
  11. };
  12.  
  13. template <typename T, typename dummy = void>
  14. struct has_base_typedef : std::false_type {};
  15.  
  16. template <typename T>
  17. struct has_base_typedef<T, typename to_void<typename T::Base>::type> : std::true_type {};
  18.  
  19. int main()
  20. {
  21. std::cout << has_base_typedef<A>::value;
  22. std::cout << has_base_typedef<B>::value;
  23. std::cout << has_base_typedef<C>::value;
  24. }
Success #stdin #stdout 0s 3412KB
stdin
Standard input is empty
stdout
011