function/Function.hpp

26 lines
457 B
C++

template <typename Fun>
class Function;
template <typename Ret, typename... Args>
class function
{
private:
class callable_base
{
public:
virtual Ret call(Args...) = 0;
};
template <typename Fun>
class callable : public callable_base
{
private:
Fun _f;
public:
callable(Fun f):_f(f) {}
virtual Ret call(Args... args)
{ return _f(std::forward<Args>(args)...); }
};
public:
};