Bonjour à tous,

Je voudrais pouvoir spécialiser le comportement d'un de mes foncteurs suivant si le type passé au foncteur défini un typedef particulier (ici value_type):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
struct my_functor
{
  template<typename T>
  void operator()(T const& t) { std::cout << "le type parametre ne definit pas value_type" << std::endl; }
 
  template<typename T>
  void operator()(T const& t) { std::cout << "le type parametre definit value_type" << std::endl; }
 
};
Et à l'utilisation ça donnerais ça:
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
 
struct T1
{
  typedef int value_type;
};
 
struct T2
{
};
 
int main()
{
  my_functor f;
  T1 t1;
  T2 t2;
  f(t1);  //afficherai "le type parametre definit value_type"
  f(t2);  //afficherai "le type parametre ne definit pas value_type"
};
Je vois pas trop comment m'y prendre (j'ai toujours un peu de mal avec les spécialisations template... )