spécialisation comportement foncteur
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:
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:
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... :aie:)