/* * File: BaseSerializationPolicy.h * Author: winckler * * Created on October 14, 2015, 1:01 PM */ #ifndef BASESERIALIZATIONPOLICY_H #define BASESERIALIZATIONPOLICY_H #include "FairMQMessage.h" #include // CRTP base class template class BaseSerializationPolicy { public: BaseSerializationPolicy() {} virtual ~BaseSerializationPolicy() {} template auto SerializeMsg(CONTAINER_TYPE container) -> decltype(static_cast(this)->SerializeMsg(container) ) { static_assert(std::is_same{}, "BaseSerializationPolicy::SerializeMsg hack broken"); return static_cast(this)->SerializeMsg(container); } template auto SetMessage(FairMQMessage* msg)-> decltype(static_cast(this)->SetMessage(msg) ) { static_assert(std::is_same{}, "BaseSerializationPolicy::SetMessage hack broken"); return static_cast(this)->SetMessage(msg); } }; /* // CRTP base class // c++14 code template class BaseSerializationPolicy { public: BaseSerializationPolicy() {} virtual ~BaseSerializationPolicy() {} template auto SerializeMsg(CONTAINER_TYPE container) { return static_cast(this)->SerializeMsg(container); } auto SetMessage(FairMQMessage* msg) { return static_cast(this)->SetMessage(msg); } }; */ #endif /* BASESERIALIZATIONPOLICY_H */