fork download
  1. #include <iostream>
  2.  
  3. template <typename t> class Number;
  4.  
  5. template <typename t>
  6. std::ostream & operator<<(std::ostream & os, const Number<t>& a);
  7.  
  8. template <typename t>
  9. Number<t> operator%(Number<t> a, Number<t> b);
  10.  
  11. template <typename t>
  12. class Number
  13. {
  14. private:
  15. t n;
  16. public:
  17. Number(t a) :n{ a } {};
  18. Number() :n{ t() } {};
  19. friend std::ostream & operator<< <t>(std::ostream & os, const Number& a);
  20. friend Number operator%<t>(Number a, Number b);
  21. };
  22.  
  23. template <typename t>
  24. std::ostream & operator<<(std::ostream & os, const Number<t>& a)
  25. {
  26. os << a.n;
  27. return os;
  28. }
  29.  
  30. template <typename t>
  31. Number<t> operator%(Number<t> a, Number<t> b)
  32. {
  33. return Number<t>(a.n % b.n);
  34. }
  35.  
  36. int main()
  37. {
  38. Number<int> a(10);
  39. Number<int> b(20);
  40. Number<int> c = a % b;
  41. std::cout << c << std::endl;
  42. }
  43.  
Success #stdin #stdout 0s 15224KB
stdin
Standard input is empty
stdout
10