¿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?

Respuestas a la pregunta(2)

Su respuesta a la pregunta