#include <iostream>
using namespace std;
enum EnumFirst {
Foo,
Bar
} ;
enum EnumSecond {
Foo2,
Bar2,
Baz2
} ;
const char * toString( EnumFirst val)
{
switch ( val) {
case EnumFirst:: Foo :
return "Foo" ;
case EnumFirst:: Bar :
return "Bar" ;
}
return "Unknown" ;
}
const char * toString( EnumSecond val)
{
switch ( val) {
case EnumSecond:: Foo2 :
return "Foo2" ;
case EnumSecond:: Bar2 :
return "Bar2" ;
case EnumSecond:: Baz2 :
return "Baz2" ;
}
return "Unknown" ;
}
int main( ) {
int v = 1 ;
EnumFirst a = v; // static_cast ?)
EnumSecond b = v;
cout << toString( a) << endl;
cout << toString( b) << endl;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKZW51bSBFbnVtRmlyc3QgewoJRm9vLAoJQmFyCn07CgplbnVtIEVudW1TZWNvbmQgewoJRm9vMiwKCUJhcjIsCglCYXoyCn07Cgpjb25zdCBjaGFyICp0b1N0cmluZyhFbnVtRmlyc3QgdmFsKQp7Cglzd2l0Y2ggKHZhbCkgewoJCWNhc2UgRW51bUZpcnN0OjpGb286CgkJCXJldHVybiAiRm9vIjsKCQljYXNlIEVudW1GaXJzdDo6QmFyOgoJCQlyZXR1cm4gIkJhciI7Cgl9CglyZXR1cm4gIlVua25vd24iOwp9Cgpjb25zdCBjaGFyICp0b1N0cmluZyhFbnVtU2Vjb25kIHZhbCkKewoJc3dpdGNoICh2YWwpIHsKCQljYXNlIEVudW1TZWNvbmQ6OkZvbzI6CgkJCXJldHVybiAiRm9vMiI7CgkJY2FzZSBFbnVtU2Vjb25kOjpCYXIyOgoJCQlyZXR1cm4gIkJhcjIiOwoJCWNhc2UgRW51bVNlY29uZDo6QmF6MjoKCQkJcmV0dXJuICJCYXoyIjsKCX0KCXJldHVybiAiVW5rbm93biI7CgkKfQoKaW50IG1haW4oKSB7CgkKCWludCB2ID0gMTsKCUVudW1GaXJzdCBhID0gdjsgLy8gc3RhdGljX2Nhc3QgPykKCUVudW1TZWNvbmQgYiA9IHY7Cgljb3V0IDw8IHRvU3RyaW5nKGEpIDw8IGVuZGw7Cgljb3V0IDw8IHRvU3RyaW5nKGIpIDw8IGVuZGw7CgkKCXJldHVybiAwOwp9