Bonjour tout le monde,

Je cherche à partir d'une classe qui hérite de plusieurs polices avec la même méthodes:
Code : 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
32
33
34
#include <iostream>
 
template<typename PolicyOne, typename PolicyTwo>
class Test : public PolicyOne, public PolicyTwo
{
  void run()
  {
    PolicyOne::run();
    PolicyTwo::run();
  }
};
 
class PolicyA
{
  void run()
  {
    std::cout << "PolicyA" << std::endl;
  }
};
 
class PolicyB
{
  void run()
  {
    std::cout << "PolicyB" << std::endl;
  }
};
 
int main(int argc, char* argv[])
{
  Test<PolicyA, PolicyB> t1;
  t1.run(); // Affiche PolicyA\nPolicyB
  return 0;
}
Je voudrais maintenant "généraliser" un peu ce type de comportement en ayant un nombre "illimité" de polices (ayant toutes le même nom de méthode). J'ai donc pensé au variadic templates avec l'implémentation suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
template<typename... Policies>
class Test : public Policies...
{
   void run()
   {
     //Que mettre ici??? Policies...::run()?
   }
};
Je ne sais pas comment parcourir l'ensemble de mes classes Policies. Peut-on utiliser une lambda fonction?

Merci pour tout!