Another door is open after you fail.
esv::make_unsigned_x_t is used make an unsigned integral class type from an integral value size1. It will make a lowest requirement for the value of size1.
esv::make_unsigned_x_t related - esv::make_unsigned_basic_x_t, esv::make_unsigned_ect_x_t
The bit size computing:
#include <esvcpp/core.hpp> int main() { static_assert(esv::same_as<esv::make_unsigned_x_t<7>, esv::ux8>); static_assert(esv::same_as<esv::make_unsigned_x_t<8>, esv::ux8>); static_assert(esv::same_as<esv::make_unsigned_x_t<9>, esv::ux16>); }