<xstd/bits/bit_array.hpp>
namespace xstd {
// [array], class template array
template<unsigned_integer Block, size_t N>
requires see below
class basic_bit_array;
template<size_t N>
using bit_array = basic_bit_array<size_t, N>;
// [array.creation], array creation functions
template<class T, size_t N>
constexpr auto to_bit_array(T (&a)[N]) -> bit_array<N>;
template<class T, size_t N>
constexpr auto to_bit_array(T (&&a)[N]) -> bit_array<N>;
}
namespace std {
// [array.tuple], tuple interface
template<size_t I, class Block, size_t N>
struct tuple_element<I, xstd::basic_bit_array<Block, N>>;
template<size_t I, class Block, size_t N>
struct tuple_element<I, const xstd::basic_bit_array<Block, N>>;
template<class Block, size_t N>
struct tuple_size<xstd::basic_bit_array<Block, N>>;
// hash support
template<class Block, size_t N>
struct hash<xstd::basic_bit_array<Block, N>>;
}
namespace boost::container_hash {
template<class Block, size_t N>
struct is_range<xstd::basic_bit_array<Block, N>> : false_type {};
template<class Block, size_t N>
struct is_tuple_like<xstd::basic_bit_array<Block, N>> : false_type {};
}