Ce code ci-dessous compile sans problème.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
template< class T >
struct mystruct
{
	enum { value = 0 };
};
 
template<> struct mystruct< int > { enum { value = 1 }; };
 
int main(int argc, char *argv[])
{
	return 0;
}
Alors que celui-ci renvoie ceci avec g++:
template.cpp:10: erreur: explicit specialization in non-namespace scope «class mycl»

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
class mycl
{
 
	template< class T >
	struct mystruct
	{
		enum { value = 0 };
	};
 
	template<> struct mystruct< int > { enum { value = 1 }; }; // Probleme
};
 
int main(int argc, char *argv[])
{
	return 0;
}
Je suis largué. J'ai cherché un peu dans le forum. J'ai trouvé des sujets liés mais j'arrive pas à comprendre.

http://www.developpez.net/forums/sho...late+namespace
http://www.developpez.net/forums/sho...late+namespace
http://www.developpez.net/forums/sho...late+namespace
http://www.developpez.net/forums/sho...ation+template
http://www.developpez.net/forums/sho...ation+template