#pragma once #include namespace floormat::detail { template struct array_size_; template struct array_size_ : std::integral_constant {}; template struct array_size_ : std::integral_constant {}; template struct array_size_> : std::integral_constant {}; template struct array_size_> : std::integral_constant {}; } // namespace floormat::detail namespace floormat { template constexpr inline size_t static_array_size = detail::array_size_::value; template constexpr inline size_t array_size(const T&) noexcept { return detail::array_size_::value; } } // namespace floormat