fork download
  1. #include <type_traits>
  2. #include <iostream>
  3. class Base
  4. {};
  5. class Derived : public Base
  6. {};
  7. template <class T, class Enabler=void>
  8. class Partialy
  9. {
  10. public:
  11. void say()
  12. {
  13. std::cout << "Partialy Default" << std::endl;
  14. }
  15. };
  16.  
  17.  
  18. template <class T>
  19. class Partialy<T, typename std::enable_if<std::is_base_of< Base, T >::value>::type>
  20. {
  21. public:
  22. void say()
  23. {
  24. std::cout << "Partialy special" << std::endl;
  25. }
  26. };
  27.  
  28. int main(void)
  29. {
  30. Derived a;
  31. Partialy<Derived> b;
  32. b.say();
  33. }
Success #stdin #stdout 0s 2884KB
stdin
Standard input is empty
stdout
Partialy special