41 lines
817 B
C++
41 lines
817 B
C++
#pragma once
|
|
|
|
#include <functional>
|
|
|
|
//template< class RT, class CallableT, class... ArgTypes >
|
|
template<class CallableT, class... ArgTypes >
|
|
class Callable {
|
|
static_assert(std::is_invocable_v<CallableT(ArgTypes...)>);
|
|
using invoke = CallableT;
|
|
public:
|
|
invoke;
|
|
//CallableT invoke = CallableT();
|
|
//ArgTypes... args
|
|
//invoke() { /*return CallableT(args...);*/ return CallableT(RT()); }
|
|
};
|
|
|
|
template< class R, class Fn, class... ArgTypes >
|
|
class Cunt {
|
|
static_assert(std::is_invocable_r_v<R, Fn, ArgTypes...>);
|
|
};
|
|
|
|
|
|
|
|
|
|
template< class RT, class... ArgTypes>
|
|
class EventBase {
|
|
public:
|
|
//using delegate = CallableT;
|
|
using delegate = std::function<RT(ArgTypes...)>;
|
|
public:
|
|
RT Invoke(ArgTypes... args);
|
|
RT operator()(ArgTypes... args);
|
|
protected:
|
|
delegate callback;
|
|
|
|
};
|
|
|
|
|
|
};
|
|
|