Bonjour à tous,
Mon problème peut être résumé dans le code suivant :
Ce code compile sous gcc 4.2.4 mais alors que je m'attendrais à ce qu'il me renvoie :
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
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; }
j'ai à la place :Vector : 3
List : 1
List : 2
List : 3
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 ?Vector : 3
Default
Default
Default
Merci pour votre aide.
Partager