/* * File: BaseSinkPolicy.h * Author: winckler * * Created on October 14, 2015, 1:01 PM */ #ifndef BASESINKPOLICY_H #define BASESINKPOLICY_H #include // CRTP base class template class BaseSinkPolicy { public: BaseSinkPolicy() {} virtual ~BaseSinkPolicy() {} template auto AddToFile(CONTAINER_TYPE container) -> decltype(static_cast(this)->AddToFile(container) ) { static_assert(std::is_same{}, "BaseSinkPolicy::AddToFile hack broken"); return static_cast(this)->AddToFile(container); } template auto InitOutputFile() -> decltype(static_cast(this)->InitOutputFile() ) { static_assert(std::is_same{}, "BaseSinkPolicy::InitOutputFile hack broken"); return static_cast(this)->InitOutputFile(); } }; #endif /* BASESINKPOLICY_H */