#include <iostream>
using namespace std;
enum one
{
a = 1,
b,
c,
d,
};
enum two
{
two_undefined,
B = 1,
C,
D,
A,
};
template <int invalue>
class enum_converter {
public:
static const two value = two_undefined;
};
template <>
class enum_converter<a> {
public:
static const two value = A;
};
template <>
class enum_converter<b> {
public:
static const two value = B;
};
template <>
class enum_converter<c> {
public:
static const two value = C;
};
template <>
class enum_converter<d> {
public:
static const two value = D;
};
int main() {
one aaa = a;
two AAA = enum_converter<a>::value;
cout << "aaa:" << aaa << endl;
cout << "AAA:" << AAA << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKZW51bSBvbmUKewogICAgYSA9IDEsCiAgICBiLAogICAgYywKICAgIGQsCn07CiAKZW51bSB0d28KewogICAgdHdvX3VuZGVmaW5lZCwKICAgIEIgPSAxLAogICAgQywKICAgIEQsCiAgICBBLAp9OwoKdGVtcGxhdGUgPGludCBpbnZhbHVlPgpjbGFzcyBlbnVtX2NvbnZlcnRlciB7CnB1YmxpYzoKICBzdGF0aWMgY29uc3QgdHdvIHZhbHVlID0gdHdvX3VuZGVmaW5lZDsKfTsKCnRlbXBsYXRlIDw+CmNsYXNzIGVudW1fY29udmVydGVyPGE+IHsKcHVibGljOgogIHN0YXRpYyBjb25zdCB0d28gdmFsdWUgPSBBOwp9OwoKdGVtcGxhdGUgPD4KY2xhc3MgZW51bV9jb252ZXJ0ZXI8Yj4gewpwdWJsaWM6CiAgc3RhdGljIGNvbnN0IHR3byB2YWx1ZSA9IEI7Cn07Cgp0ZW1wbGF0ZSA8PgpjbGFzcyBlbnVtX2NvbnZlcnRlcjxjPiB7CnB1YmxpYzoKICBzdGF0aWMgY29uc3QgdHdvIHZhbHVlID0gQzsKfTsKCnRlbXBsYXRlIDw+CmNsYXNzIGVudW1fY29udmVydGVyPGQ+IHsKcHVibGljOgogIHN0YXRpYyBjb25zdCB0d28gdmFsdWUgPSBEOwp9OwoKCmludCBtYWluKCkgewoJb25lIGFhYSA9IGE7Cgl0d28gQUFBID0gZW51bV9jb252ZXJ0ZXI8YT46OnZhbHVlOwoJY291dCA8PCAiYWFhOiIgPDwgYWFhIDw8IGVuZGw7Cgljb3V0IDw8ICJBQUE6IiA8PCBBQUEgPDwgZW5kbDsKCXJldHVybiAwOwp9