fork 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. typename Space::Vector v;
  30.  
  31. void Print(Overload<Space2>);
  32. void Print(Overload<Space3>);
  33. void Print();
  34. };
  35.  
  36. template<typename Space>
  37. void Body<Space>::Print(Overload<Space2>)
  38. {
  39. printf("%f", v.X);
  40. }
  41. template<typename Space>
  42. void Body<Space>::Print(Overload<Space3>)
  43. {
  44. printf("%f", v.x);
  45. }
  46.  
  47. template<typename Space>
  48. void Body<Space>::Print()
  49. {
  50. Print(Overload<Space>());
  51. }
  52.  
  53. int main()
  54. {
  55. Body<Space2> body;
  56. body.Print();
  57. return 0;
  58. };
Success #stdin #stdout 0s 3340KB
stdin
Standard input is empty
stdout
0.000000