Surcharge particulière de fonctions templates ?
Bonjour à tous,
Mon problème peut être résumé dans le code suivant :
Code:
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 33 34 35 36 37 38
|
#include <iostream>
#include <vector>
#include <list>
using namespace std;
template<class T> void foo(const T& t)
{
cout << "Default" << endl;
};
template<class T> void foo(const vector<T>& v)
{
cout << "Vector : " << v.size() << endl;
for(uint i=0;i<v.size();i++)
{
foo(v[i]);
}
};
template<typename T> void foo(const list<T>& v)
{
cout << "List : " << v.size() << endl;
};
int main(int argc, char **argv)
{
vector< list<double> > v(3);
v[0] = list<double>(1);
v[1] = list<double>(2);
v[2] = list<double>(3);
foo(v);
return 0;
} |
Ce code compile sous gcc 4.2.4 mais alors que je m'attendrais à ce qu'il me renvoie :
Citation:
Vector : 3
List : 1
List : 2
List : 3
j'ai à la place :
Citation:
Vector : 3
Default
Default
Default
Sauriez-vous comment corriger ce code pour obtenir le résultat attendu en exploitant au mieux les fonctions template ?? Faut-il abandonner les templates dans cette configuration ?
Merci pour votre aide.