#include <iostream>
template<unsigned A>
struct Wrapper {
int content[A];
void foo() { };
};
#define WRAPPER_SWITCH_CASE(i) case i: Wrapper<i>().foo(); break;
int main(int argc, char *argv[])
{
std::string arg = /*argv[1]*/"2"; // ...because here is online compiler >o<
int arg_int = std::stoi(arg);
switch (arg_int) {
WRAPPER_SWITCH_CASE(1)
WRAPPER_SWITCH_CASE(2)
WRAPPER_SWITCH_CASE(3)
default: return 1;
};
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8dW5zaWduZWQgQT4Kc3RydWN0IFdyYXBwZXIgewogICAgaW50IGNvbnRlbnRbQV07CiAgICB2b2lkIGZvbygpIHsgfTsKfTsKCiNkZWZpbmUgV1JBUFBFUl9TV0lUQ0hfQ0FTRShpKSBjYXNlIGk6IFdyYXBwZXI8aT4oKS5mb28oKTsgYnJlYWs7CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQp7CiAgICBzdGQ6OnN0cmluZyBhcmcgPSAvKmFyZ3ZbMV0qLyIyIjsgLy8gLi4uYmVjYXVzZSBoZXJlIGlzIG9ubGluZSBjb21waWxlciA+bzwKICAgIGludCBhcmdfaW50ID0gc3RkOjpzdG9pKGFyZyk7CgogICAgc3dpdGNoIChhcmdfaW50KSB7CiAgICAgICAgV1JBUFBFUl9TV0lUQ0hfQ0FTRSgxKQogICAgICAgIFdSQVBQRVJfU1dJVENIX0NBU0UoMikKICAgICAgICBXUkFQUEVSX1NXSVRDSF9DQVNFKDMpCiAgICBkZWZhdWx0OiByZXR1cm4gMTsKICAgIH07CgogICAgcmV0dXJuIDA7Cn0K