Bonjour à tous,

Je me retrouve dans cette situation ci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
template struct Test<int A, int B>
{
   static void run();
};
 
template<> struct test<0, 0> { /* code spécifique */ };
template<> struct test<0, 1> { /* code spécifique */ };
template<> struct test<1, 0> { /* code spécifique */ };
template<> struct test<1, 1> { /* code spécifique */ };
Les valeurs de A et B sont connues et comprises entre 0 et 5.

Mon soucis c'est qu'étant donné que je suis dans un mode webservice, les valeurs A et B sont passées par l'utilisateur du service en chaîne de caractères que j'aurais préalablement parsé.

Je me retrouve donc avec une fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
void run(int iA, int iB);
Dont le contenu doit appeler :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Test<iA, iB>::run();
Bien évidemment ça ne fonctionne pas étant donné que les paramètres iA et iB ne sont pas constants.

Alors je cherche une solution pas trop dégueulasse pour pallier contourner cette erreur.

Par exemple générer des fonctions de ce type, via probablement des macros ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
void run_test_0_0()
{
    Test<0, 0>::run();
}
Ce qui serait bien c'est que ces fonctions soient générées automatiquement, parce que aujourd'hui les valeurs vont de 0 à 5, mais demain ça pourra aller jusqu'à 10, 20, 30, et ça va devenir compliqué de générer cette "matrice" de fonction.

J'ose croire qu'à la compilation, en utilisant macro et template récursif, on peut faire quelque chose du genre "GenerateFunctions<5, 5>" et que ça génère l'ensemble plutôt que le faire (et surtout le maintenir) à la main ?

Merci d'avance pour vos réponses,

A bientôt