Guest User

Untitled

a guest
Jan 22nd, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.70 KB | None | 0 0
  1. #include <stdarg.h>
  2. #include <stdlib.h>
  3. #include <iostream>
  4.  
  5. class Type {};
  6.  
  7. class Number : public Type {
  8.     protected:
  9.         double val;
  10.     public:
  11.         Number(double value) : val(value) {}
  12.         double value() { return val; }
  13. };
  14.  
  15. class Lambda : public Type {};
  16. class Closure : public Lambda {};
  17.  
  18. class Max : public Lambda {
  19.     public:
  20.         Number* operator () (Number* a, Number* b) {
  21.             return (a->value() > b->value()) ? a : b;
  22.         }
  23. };
  24.  
  25. Type* gen_max_lambda(void)
  26. {
  27.     Max* max_fn = new Max();
  28.     return max_fn;
  29. }
  30.  
  31. int main(int argc, char** argv)
  32. {
  33.     Number* a = new Number(1);
  34.     Number* b = new Number(5);
  35.     Max* foo = (Max*)gen_max_lambda();
  36.     std::cout << ((Number*)(*foo)(a,b))->value();
  37.     return 0;
  38. }
Add Comment
Please, Sign In to add comment