A recent and interesting C language-lawyer question asked:
This Q&A asks the same question for the similar cases for C++(*): are these valid?
enum EA { a } ea = EA(2); // #1
enum EB { b } eb = static_cast<EB>(2); // #2
I've already noted that the variation enum EC { c } ec = EC{2}; is rejected at compile time ("cannot initialize a value of type 'E' with an rvalue of type 'int'), whereas #1 and #2 are accepted, ruling out ill-formed but not ill-formed NDR and UB for #1 and #2.
(*) Posted here as a self-answered Q&A after being prompted to break out overly eager and misplaced C++-focused answer to the original C language-lawyer question.