static int needed_bits(const InputRange& range) { return needed_bits(std::begin(range), std::end(range)); }
int_vector::int_vector(std::initializer_list<value_type> ilist) : int_vector(static_cast<size_type>(ilist.size()), needed_bits(ilist)) { std::copy(ilist.begin(), ilist.end(), begin()); }
Array1D<T> zero_pad(const Array1D<T>& v) { int n = pow2(needed_bits(v.size())); return n==v.size() ? v : zero_pad(v, n); }