Bonjour,
Je me suis trouvé face à un problème dans du code.
J'ai réussi à le simplifier à maximum.
Voici le code :
Test.cpp :
Ca compil avec gcc.
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 namespace Bar { template <class T2> T2 f() { return T2(0); } } void Foo1(float y = Bar::f<float>()) { } template <class T> void Foo2(float y = Bar::f<float>()) // Ici { } int main() { Foo1(); Foo2<int>(); return 0; }
Ca ne compil pas avec visual studio 2008 et l'erreur est la suivante sur la ligne avec un commentaire
error C2783: 'T2 Bar::f(void)' : could not deduce template argument for 'T2'
[Edit] Ca ne compil pas non plus avec Visual studio 2005 [/Edit]
Où est mon problème ?
Sachant que :
Si je mets un float en argument de Foo2 ça compil.
Si je retire le namespace ça compil.
Merci.
Partager