#ifndef CHAOS_HASH_HASHER_HPP #define CHAOS_HASH_HASHER_HPP namespace Chaos::Hash { template class Hasher { public: template void Update(InputIt begin, InputIt end) { Impl().Update(begin, end); } auto Finish() { return Impl().Finish(); } private: const T & Impl() const { return static_cast(*this); } T & Impl() { return static_cast(*this); } }; } // namespace Chaos::Hash #endif