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