Bonjour,

Je cherche à faire une spécialisation partielle d'une méthode membre d'une classe template. Exemple :
A.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
template <typename T, typename U>
class A
{
    void function ();
};
A.cpp :
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
 
 
// Fonction generique :
template <typename T, typename U>
void A<T, U>::function ()
{
    ...
}
 
// Specialisation partielle de U en int
template <typename T>
void A<T, int>::function ()
{
    ...
}
Ca ne marche pas.

Je cherche donc a contourner le probleme :

A.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
template <typename T, typename U>
void A<T, U>::function ()
{
#if U==int
    // le code pour la spécialisation de U en int
#else
    // le code générique
#endif
}
Qu'en pensez vous ?
Peut on utiliser des variables template dans des directives de precompilation sans risque ?

Merci pour votre attention.