Advertisement
Guest User

templates & calculator

a guest
Nov 21st, 2015
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.77 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. template <typename T>
  5. int add(const T &a, const T &b) {
  6.     return a + b;
  7. }
  8.  
  9. template <typename T>
  10. int sub(const T &a, const T &b) {
  11.     return a - b;
  12. }
  13.  
  14. template <typename T>
  15. int mul(const T &a, const T &b) {
  16.     return a * b;
  17. }
  18.  
  19. template <typename T>
  20. int div(const T &a, const T &b) {
  21.     return a / b;
  22. }
  23.  
  24. template <typename T, T (*F)(const T&, const T&)>
  25. T calc1(T a, T b) {
  26.     return F(a, b);
  27. }
  28.  
  29. enum {
  30.     ADD,
  31.     SUB,
  32.     DIV,
  33.     MUL
  34. };
  35.  
  36. template <typename T, int I=ADD>
  37. T calc2(T a, T b) {
  38.     return (I==ADD) ? (a+b) : ((I==SUB) ? (a-b) : ((I==MUL) ? (a*b) : (a/b)));
  39. }
  40.  
  41. int main(void) {
  42.     using namespace std;
  43.  
  44.     cout << calc1<int, add>(2, 4) << endl;
  45.     cout << calc2<float, SUB>(3.0f, 1.0f) << endl;
  46.  
  47.     return EXIT_SUCCESS;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement