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):
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 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; } };
Je vois pas trop comment m'y prendre (j'ai toujours un peu de mal avec les spécialisations template...
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" };)
Partager