#ifndef LIMONP_CLOSURE_HPP #define LIMONP_CLOSURE_HPP namespace limonp { class ITask { public: virtual ~ITask() { } virtual void Run() = 0; }; // class ITask template ITask* CreateTask() { return new TaskType(); } template ITask* CreateTask(ArgType arg) { return new TaskType(arg); } template ITask* CreateTask(ArgType0 arg0, ArgType1 arg1) { return new TaskType(arg0, arg1); } template ITask* CreateTask(ArgType0 arg0, ArgType1 arg1, ArgType2 arg2) { return new TaskType(arg0, arg1, arg2); } } // namespace limonp #endif // LIMONP_CLOSURE_HPP