Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdarg.h>
- #include <stdlib.h>
- #include <iostream>
- class Type {};
- class Number : public Type {
- protected:
- double val;
- public:
- Number(double value) : val(value) {}
- double value() { return val; }
- };
- class Lambda : public Type {};
- class Closure : public Lambda {};
- class Max : public Lambda {
- public:
- Number* operator () (Number* a, Number* b) {
- return (a->value() > b->value()) ? a : b;
- }
- };
- Type* gen_max_lambda(void)
- {
- Max* max_fn = new Max();
- return max_fn;
- }
- int main(int argc, char** argv)
- {
- Number* a = new Number(1);
- Number* b = new Number(5);
- Max* foo = (Max*)gen_max_lambda();
- std::cout << ((Number*)(*foo)(a,b))->value();
- return 0;
- }
Add Comment
Please, Sign In to add comment