I have a piece of c++11 code similar like below:
switch(var) {
case 1: dosomething(std::get<1>(tuple));
case 2: dosomething(std::get<2>(tup
For c++11 here is a concise approach that returns a pointer:
template ::value>
struct tuple_address {
static void * of(Tuple & tuple, long function_index) {
if (template_index - 1 == function_index) {
return &std::get(tuple);
} else {
return tuple_address::of(tuple, function_index);
}
}
};
template
struct tuple_address {
static void * of(Tuple & tuple, long function_index) {
return 0;
}
};
template
void * tuple_address_of(Tuple & tuple, long index) {
return tuple_address::of(tuple, index);
}