Guest User

Untitled

a guest
Jan 17th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. class Base
  2. {};
  3. class Derived : public Base
  4. {};
  5.  
  6. template <class T, class Enabler=void>
  7. class Partialy
  8. {
  9. public:
  10. void say()
  11. {
  12. std::cout << "Partialy Default" << std::endl;
  13. }
  14. };
  15.  
  16. template <class T>
  17. class Partialy<T, typename std::enable_if<std::is_base_of< Base, T >::value>::type>
  18. {
  19. public:
  20. void say()
  21. {
  22. std::cout << "Partialy special" << std::endl;
  23. }
  24. };
  25.  
  26. template <class T>
  27. class BaseTpl
  28. {};
  29. class DerivedTpl : public BaseTpl<int>
  30. {};
  31.  
  32. template <class T, class Ta>
  33. class Partialy<T, typename std::enable_if<std::is_base_of< BaseTpl<Ta>, T >::value>::type>
  34. {
  35. public:
  36. void say()
  37. {
  38. std::cout << "Partialy special with TPL" << std::endl;
  39. }
  40. };
  41.  
  42. class A1 : public BaseTpl<int>
  43. class A2 : public BaseTpl<std::string>
  44. class A3 : public BaseTpl<vector<int> >
  45. ...
  46.  
  47. class DerivedTpl : public BaseTpl<int>, public BaseTpl<char>
  48. {};
  49.  
  50. class BaseNonTpl {};
  51.  
  52. template <class T>
  53. class BaseTpl : BaseNonTpl
  54. {};
  55.  
  56. template <class T>
  57. class PartialyTpl<T, typename std::enable_if<std::is_base_of< BaseNonTpl, T >::value>::type>
Add Comment
Please, Sign In to add comment