#include <iomanip>
#include <iostream>
#include <type_traits>
using namespace std;
enum struct XXX : int {
AAA = 123,
BBB = 456,
};
int main() {
cout << "Is XXX self-assignable: "
<< boolalpha << is_assignable<XXX, XXX>::value
<< endl;
auto x = XXX::AAA;
x = XXX::BBB;
cout << "... but x == "
<< static_cast<underlying_type_t<XXX>>(x)
<< endl;
return 0;
}
I2luY2x1ZGUgPGlvbWFuaXA+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKZW51bSBzdHJ1Y3QgWFhYIDogaW50IHsKCUFBQSA9IDEyMywKCUJCQiA9IDQ1NiwKfTsKCmludCBtYWluKCkgewoJY291dCA8PCAiSXMgWFhYIHNlbGYtYXNzaWduYWJsZTogIgoJCSA8PCBib29sYWxwaGEgPDwgaXNfYXNzaWduYWJsZTxYWFgsIFhYWD46OnZhbHVlCgkJIDw8IGVuZGw7CgkJIAoJYXV0byB4ID0gWFhYOjpBQUE7Cgl4ID0gWFhYOjpCQkI7Cgljb3V0IDw8ICIuLi4gYnV0IHggPT0gIgoJCSA8PCBzdGF0aWNfY2FzdDx1bmRlcmx5aW5nX3R5cGVfdDxYWFg+Pih4KQoJCSA8PCBlbmRsOwoJcmV0dXJuIDA7Cn0=