#include <stdio.h>
enum class Foo {
VAL_A = 0, VAL_B = 1, VAL_C = 2
};
enum class Bar {
VAL_A = 10, VAL_B = 11, VAL_C = 12
};
template<typename T>
void TestSwitch(T op)
{
printf("%d: ", static_cast<int>(op));
switch (op) {
case T::VAL_A: printf("aaa\n"); break;
case T::VAL_B: printf("bbb\n"); break;
case T::VAL_C: printf("ccc\n"); break;
default: break;
}
}
int main() {
TestSwitch(Foo::VAL_A);
TestSwitch(Bar::VAL_C);
}
ICAgICNpbmNsdWRlIDxzdGRpby5oPgoKICAgIGVudW0gY2xhc3MgRm9vIHsKICAgICAgICBWQUxfQSA9IDAsIFZBTF9CID0gMSwgVkFMX0MgPSAyCiAgICB9OwoKICAgIGVudW0gY2xhc3MgQmFyIHsKICAgICAgICBWQUxfQSA9IDEwLCBWQUxfQiA9IDExLCBWQUxfQyA9IDEyCiAgICB9OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICB2b2lkIFRlc3RTd2l0Y2goVCBvcCkKICAgIHsKICAgICAgICBwcmludGYoIiVkOiAiLCBzdGF0aWNfY2FzdDxpbnQ+KG9wKSk7CiAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICAgICBjYXNlIFQ6OlZBTF9BOiBwcmludGYoImFhYVxuIik7IGJyZWFrOwogICAgICAgICAgICBjYXNlIFQ6OlZBTF9COiBwcmludGYoImJiYlxuIik7IGJyZWFrOwogICAgICAgICAgICBjYXNlIFQ6OlZBTF9DOiBwcmludGYoImNjY1xuIik7IGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OiBicmVhazsKICAgICAgICB9CiAgICB9CgogICAgaW50IG1haW4oKSB7CiAgICAgICAgVGVzdFN3aXRjaChGb286OlZBTF9BKTsKICAgICAgICBUZXN0U3dpdGNoKEJhcjo6VkFMX0MpOwogICAgfQo=