diff --git a/Function.hpp b/Function.hpp index c670842..5232290 100644 --- a/Function.hpp +++ b/Function.hpp @@ -16,11 +16,23 @@ private: class callable : public callable_base { private: - Fun _f; + Fun _fun; public: - callable(Fun f):_f(f) {} + callable(Fun fun):_fun(fun) {} virtual Ret call(Args... args) - { return _f(std::forward(args)...); } + { return _fun(std::forward(args)...); } }; + + callable_base* _fun; public: + Function() {} + + template + Function& operator=(Fun fun) + { + _fun = new callable(fun); + return *this; + } + + ~Function() { delete _fun; } }; \ No newline at end of file