Bonjour à toutes et à tous !

J'essaie de documenter une portion de mon code avec Doxygen, et je rencontre quelques problèmes. En fait je me demande si Doxygen est capable d'y voir clair dans cette structure syntaxique (je sais pas si elle est pertinente bout en bout, mais elle m'a permis de supprimer des duplications de code en héritant l'implémentation commune aux deux stratégies de simulation).

Donc on y va:

Deux types de stratégies pour lesquelles je voudrais un comportement différent:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
  namespace strategy {
    struct individual_based {
      using value_type = unsigned int;
    };
 
    struct mass_based {
      using value_type = double;
    };
  }
Ensuite la classe de base qui récupère toute l'implémentation commune aux deux variantes:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
template<typename A, typename B, typename Strategy>
class CommonBase {
  // méthodes communes  
};
Le template général (je sais pas si ça a un nom), qui est vide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 template<typename A, typename B, typename Strategy>
 class MaClasse : public CommonBase<A, B, Strategy>
 { 
// vide
  };
Et enfin les spécialisations:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
  template<typename A, typename B>
  class MaClasse<A, B, strategy::individual_based> : public CommonBase<Space, Time, strategy::individual_based>
  {
     // une implémentation particulière d'une méthode foo est rajoutée ici
  }
 
  template<typename A, typename B>
  class MaClasse<A, B, strategy::mass_based> : public CommonBase<Space, Time, strategy::mass_based>
  {
     // une autre implémentation de foo ici
  }
Le truc c'est que Doxygen ne détecte pas les deux dernières spécialisations, et donc je suis incapable de générer la doc pour MaClasse<A, B, strategy::individual_based>::foo et MaClasse<A, B, strategy::mass_based>::foo. Ce qui est bien embêtant parce que c'est un peu le point important de la manip quand même

Je sais que le pauvre Doxygen en voit de toute les couleurs avec les templates et que c'est pas vraiment sa faute, mais si j'avais un work-around, ce serait super !

Qu'en pensez-vous ?

En vous remerciant d'avance,