#pragma once namespace floormat::Pack_impl { [[noreturn]] void throw_on_read_nonzero() noexcept(false); [[noreturn]] void throw_on_write_input_bit_overflow() noexcept(false); template struct expand_sum; template struct expand_sum { static constexpr size_t value = N + expand_sum::value; }; template<> struct expand_sum<> { static constexpr size_t value = 0; }; template constexpr inline size_t sum = expand_sum::value; } // namespace floormat::Pack_impl