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