После того, как вы это сделали, это все еще считается не фиксированный базовый тип?
Перечисление без фиксированного базового типа имеет ограниченный диапазон, в основном описываемый как «диапазон битов, которые могут представлять значения перечисления». Преобразование в перечисление со значением, которое находится «вне этих битов», является неопределенным поведением.
Таким образом, учитывая перечисление без фиксированного базового типа, кажется, что вы не можете конвертировать все значения базового типа к значению перечисления.
enum no_fixed_underlying { bob = 1; };
std::underlying_type_t<no_fixed_underlying> x = -1; // valid
auto e = (no_fixed_underlying)x; // undefined behavior!
Это правильно?
В последнем проекте expr.static.cast / 10 и dcl.enum / 8 — это то, на чем я основывался вышеизложенное понимание.