fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. // - templateexample.h
  5. template<typename T> class Example
  6. {
  7. public:
  8. Example(){}
  9. int doWork() {return 42;}
  10. };
  11. // ---------------------------
  12.  
  13. // - templatespecialization.h
  14. //#include "templateexample.h"
  15. template<> class Example<int>
  16. {
  17. public:
  18. Example() : a(0), b(1), c(2), d(3) {}
  19. int doWork() {return a+b+c+d;}
  20.  
  21. private:
  22. int a;
  23. int b;
  24. int c;
  25. int d;
  26. };
  27. // ---------------------------
  28.  
  29. // - a.h ---------------------
  30. // #include templateexample.h
  31. class A
  32. {
  33. public:
  34. Example<int> returnSmallExample();
  35. };
  36. // - a.cpp -------------------
  37. Example<int> A::returnSmallExample() {return Example<int>();}
  38. // ---------------------------
  39.  
  40. // - main.cpp ---------------
  41. // #include "a.h"
  42. // #include "templatespecialization.h"
  43. int main()
  44. {
  45. A a;
  46. Example<int> test = a.returnSmallExample();
  47. std::cout<<test.doWork()<<std::endl;
  48. }
Success #stdin #stdout 0s 3096KB
stdin
Standard input is empty
stdout
6