#pragma once #include #include "ProvidesSeqCountIF.h" template class SeqCountProvider : public ProvidesSeqCountIF { static_assert(std::is_same::value || std::is_same::value || std::is_same::value, "Only uint8_t, uint16_t, and uint32_t are allowed."); public: [[nodiscard]] unsigned int bitWidth() const override { return sizeof(T) * 8; } uint64_t get() override { return counter; } void increment() override { counter++; } private: T counter{}; }; using SeqCountProviderU8 = SeqCountProvider; using SeqCountProviderU16 = SeqCountProvider; using SeqCountProviderU32 = SeqCountProvider;