operator |
дает int
результат
type1_e(y | x)
y | x
равен int
.Вы явно приводите, что int
на type1_e
.
y |= (type1_e)(y|x);
эквивалентно
y = y | type1_e(y | x);
Вы используете operator |
, что дает int
результат, затем пытается присвоить это y
, что type1_e
.Вы не можете сделать это без приведения.
Чтобы преодолеть это, вы можете сделать это:
y = type1_e(y | type1_e(y | x));
, что аналогично:
y = type1_e(y | y | x);
который совпадает с:
y = type1_e(y | x);
или:
y = static_cast<type1_e>(y | x);