Hello,
En compilant ce code sous visual (testé sous VC6, VS2005 et VC++2008 express) j'obtiens une erreur précisant que le paramètre template C de la fonction test(...) ne peux pas être déduit. Pourtant je précise explicitement test<T>, donc il ne devrait pas y avoir de processus de déduction...
Comeau online me dit ok. Donc c'est une bourde de Visual ?
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 template<typename T> class IsClassT { private: typedef char One; typedef struct { char a[2]; } Two; template<typename C> static One test(int C::*); template<typename C> static Two test(...); public: enum { Yes = sizeof(IsClassT<T>::test<T>(0)) == 1 }; enum { No = !Yes }; }; int main() { int i = IsClassT< IsClassT<int> >::Yes; return 0; }
Partager