¿Alimentar elemento de función de plantilla desde tupla en tiempo de ejecución?
En C ++ tengo una tupla con algunos elementos:
std::tuple <int, char> my_tuple(3, 'q');
Y alguna función de plantilla que funciona perfectamente tanto en enteros como en caracteres:
template <class T> void my_function(T);
Ahora, digamos que en tiempo de ejecución quiero ejecutar my_function en uno de los elementos de mi tupla (pero no sé cuál). Noté que no es posible hacer algo como:
unsigned int n;
// Give a value to n
my_function(std::get <n> (my_tuple));
Sin embargo, en principio lo que necesito debería ser idéntico a algo como:
unsigned int n;
// Give a value to n
switch(n)
{
case 0:
my_function(std::get <0> (my_tuple));
break;
case 1:
my_function(std::get <1> (my_tuple));
break;
default:
// Do nothing or throw an exception
}
Entonces me parece que esto debería ser factible ... ¿verdad?