fork(2) download
  1. #include <stdio.h>
  2.  
  3. struct Vector2
  4. {
  5. float X, Y;
  6. };
  7.  
  8. struct Vector3
  9. {
  10. float x, y, z;
  11. };
  12.  
  13. struct Space2
  14. {
  15. typedef Vector2 Vector;
  16. };
  17.  
  18. struct Space3
  19. {
  20. typedef Vector3 Vector;
  21. };
  22.  
  23. template<typename T>
  24. struct Overload{};
  25.  
  26. template<typename Space>
  27. struct Body
  28. {
  29. typedef typename Space::Vector vec;
  30.  
  31. vec v;
  32.  
  33. void Print(Overload<Space2>);
  34. void Print(Overload<Space3>);
  35. void Print();
  36. };
  37.  
  38. template<typename Space>
  39. void Body<Space>::Print(Overload<Space2>)
  40. {
  41. printf("%f", v.X);
  42. }
  43. template<typename Space>
  44. void Body<Space>::Print(Overload<Space3>)
  45. {
  46. printf("%f", v.x);
  47. }
  48.  
  49. template<typename Space>
  50. void Body<Space>::Print()
  51. {
  52. Print(Overload<Space>());
  53. }
  54.  
  55. int main()
  56. {
  57. Body<Space2> body;
  58. body.Print();
  59. return 0;
  60. };
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
0.000000