fork download
  1. #include <stdio.h>
  2.  
  3.  
  4. class TraitsBase{
  5. protected:
  6.  
  7. TraitsBase() {}
  8.  
  9. void func1(){
  10. printf("func1\n");
  11. }
  12. void func2(){
  13. printf("func2\n");
  14. }
  15. public:
  16. virtual void call() = 0;
  17. };
  18. template<class T> class Traits;
  19. template<> class Traits<int> : public TraitsBase{
  20. public:
  21. virtual void call(){
  22. func1();
  23. }
  24.  
  25. };
  26. template<> class Traits<float>: public TraitsBase{
  27. public:
  28. virtual void call(){
  29. func2();
  30. }
  31. };
  32. int main(){
  33. Traits<int> i;
  34. i.call();
  35. Traits<float> f;
  36. f.call();
  37.  
  38. }
Success #stdin #stdout 0.01s 2724KB
stdin
Standard input is empty
stdout
func1
func2