#pragma once #include namespace sp { template class BitField { private: static constexpr int BITS_IN_CHAR = 8; static_assert(sizeof(T) * BITS_IN_CHAR > BitSize, "The bit count must be lower than the actual type size !"); T m_Data; public: BitField() : m_Data{} {}; BitField(T a_Data) : m_Data(a_Data) {} BitField& operator=(T a_Data) { m_Data = a_Data; return *this; } constexpr std::size_t GetBitSize() const { return BitSize; } T& operator*() { return m_Data; } const T& operator*() const { return m_Data; } }; } // namespace sp