Esiste l'operatore decltype che restituisce il tipo della variable passata come argomento, tuttavia la discriminazione la devi fare con typeid o con i type_traits a seconda di cosa ti torna comodo.
codice:
        auto t = make_tuple(10,"ciao"s);
        cout << typeid(decltype(get<0>(t))).name() << endl;
        cout << is_integral<std::remove_reference_t<decltype(get<0>(t))>>::value << endl;
Ti rimando alla relativa documentazione dei type_traits su cppreference per i dettagli.
Inoltre esiste anche tuple_element, ma li occorre eplicitare i tipi nella tupla.