Bonjour,
Le code suivant est-il conforme :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| template< typename T >
struct base
{
typedef T base_type;
};
template< typename T >
struct interface
{
void method() {}
};
template< typename T >
struct derived : base< interface< T > >
{
derived()
{
&base_type::method;
}
}; |
?
Il compile sous vc80 mais pas avec cygwin/gcc3.4 et surtout pas avec Comeau (ce qui en général n'est pas bon signe).
Je sais qu'écrire :
&base< interface< T > >::base_type::method;
Voire même :
&derived::base_type::method;
Permet apparemment de résoudre le problème mais ce n'est pas une solution possible dans mon contexte (c'est du code extrait d'un morceau de code plus gros 'généré' par macros).
J'ai un peu cherché dans le texte de la norme mais je n'ai rien trouvé de vraiment clair et définitif...
Merci !
MAT.
Partager