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
| // Générique
template <typename T>
void doSpecificStuff(T* t)
{ ... }
// Spécialisation pour A
template <>
void doSpecificStuff(A* a)
{
a->val1 = 5;
}
// Spécialisation pour B
template <>
void doSpecificStuff(B* b)
{
b->val2 = 5;
}
(...)
// La fonction qui fait tout le boulot, du moins vu de l'extérieur
template <typename T>
void doStuff(T* t)
{
(...) // Un bout des 95% de code générique
doSpecificStuff(t); // Les 5% de code incriminés
(...) // L'autre partie des 95% de code générique
} |
Partager