Salut, en fait j'essaye de récupérer un élément d'un tuple via une variable de type int. (et non pas une constexpr)

Cependant je ne trouve pas comment faire :
J'ai essayé ceci :

Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
template <typename T, int i, bool>
    struct S {
             static typename std::tuple_element<i, decltype(T::typelist)>::type actualType = std::tuple_element<i, decltype(T::typelist)>();
    };
    template<>
    template<typename T, int i>
    struct S<T, i, false>
    {
        static void get(int n, T& result)
        {
            //assert(false);
        }
    };
    template <typename T, int i>
    struct S<T, i, true> {
        static void get(int n, T& result) {
            switch(n) {
                case 0 : {
                    actualType = std::get<i>(T::typelist);
                    break;
                }
                    default : {
                    constexpr bool isGreater = (std::tuple_size<decltype(T::typelist)>::value > i + 1);
                    return S<T, i+1, isGreater>::get(n-1, result);
                    break;
                }
            }
        }
        static typename std::tuple_element<i, decltype(T::typelist)>::type actualType;
    };

Le problème c'est que si la variable statique n'est pas initialisée le compilateur râle, alors je ne sais pas comment je pourrais initializer cette variable statique et si y'a pas moyen je ne vois pas comment récupérer l'élément dans le tuple. :/
J'ai cherché partout sur internet mais je n'ai rien trouvé, quelqu'un a t'il une solution ?

Merci.