J'ai le code suivant, il se compile avec gcc 4.4 sans aucun avertissement, et renvoie 42.
template<typename T>
struct foo
{ };
template<typename T>
struct foo<void (T)>
{
enum { value = 42 };
};
int main()
{
return foo<void ((int))>::value;
}
Maintenant, je vois pourquoi cela devrait fonctionner quand le paramètre du modèle est void (int)
mais c'est quoi le problème avec les doubles parenthèses ? Est-ce légal en C++ ? Est-ce la même chose que void (int)
?
Cheers