13 #include "rad/anyEvent.hpp"
14 #include "rad/detail/Holder.hpp"
21 template <
typename EVENT,
typename =
void>
24 char const*
GetId()
const {
return EVENT::id; }
31 template <
typename EVENT>
32 class Event<EVENT, typename std::enable_if<!std::is_void<typename EVENT::payload_t>::value>::type> {
33 using payload_t =
typename EVENT::payload_t;
38 Event(Event
const& e) =
default;
39 Event(Event& e) =
default;
40 Event(Event&& e) =
default;
41 Event& operator=(Event
const& e) =
default;
47 template <
class... Args>
49 Event(Args&&... args) : m_ptr{
new detail::HolderTImpl<EVENT>{std::forward<Args>(args)...}} {}
51 char const*
GetId()
const {
return EVENT::id; }
54 return static_cast<detail::HolderTImpl<EVENT>*
>(m_ptr.get())->m_payload;
66 std::shared_ptr<detail::Holder> m_ptr;
71 #endif // EVENT_EVENT_HPP
EVENT::payload_t & GetPayload(AnyEvent &ev)
Definition: getPayload.hpp:29
char const * GetId() const
Definition: event.hpp:24
Definition: anyEvent.hpp:52
Event(Args &&...args)
Definition: event.hpp:49