cpoupon@toto.cea.fr Guest
|
Posted: Mon May 30, 2005 1:43 pm Post subject: Probleme de specialisation de methode template dans une clas |
|
|
Bonjour,
quelqu'un peut-il me dire la syntaxe a adopter pour que
le code suivant fonctionne a la fois sur gcc3 et gcc4
sans avoir a utiliser de #ifdef
Ce code compile sur gcc4, mais sur gcc3, il faut
supprimer un des "template <>" de la specialisation
pour que ca compile, sous peine d'avoir le message
d'erreur suivant:
example.cc: In instantiation of `A<int>':
example.cc:26: instantiated from here
example.cc:26: too many template parameter lists in declaration of
`A<int>::Axis'
Merci pour votre aide,
Cyril
-------------------------------------------------------------------------
#include <iostream>
template < class T >
class A
{
public:
enum Axis
{
X_AXIS
};
template < class U > void foo( U u, Axis axis );
};
template < class T > template < class U >
void A< T >::foo( U u, A< T >::Axis axis )
{
}
template <> template <>
void A< int >::foo< int >( int u, A< int >::Axis axis )
{
}
int main()
{
A< int > a;
a.foo< int >( ( int )1, A< int >::X_AXIS );
return 1;
}
|
|