Bonjour à tous !

Nous avons un petit problème de compilation avec g++. En fait nous faisons une surcharge de l'opérateur << au sein d'une classe comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
template<typename T>
class Maclasse
{
//... constructeurs & co
 
//surcharge de l'opérateur
friend ostream & operator<< <>(ostream & os, Maclasse g);
};
Je définis ensuite cette fonctionne en dehors de la classe comme suit

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
template <typename T>
ostream & operator << (ostream & os, Maclasse<T> g)
{
 return os << "tests" << endl;
}
LA compilation et l'utilisation de cette cclasse fonctionnent sans probleme sur g++ version 3.3.X et 2.95.3 ainsi que sous visual C++ 8.0.

Cependant j'utilise actuellement g++ 3.4.1 et la compilation me cree une erreur, disant que le template ne correspond pas:

error: template-id `operator<< <>' for `std::basic_ostream<char, std::char_traits<char> >& operator<<(std::basic_ostream<char, std::char_traits<char> >&, Maclasse<int>)' does not match any template declaration

Quelqu'un aurait il une idée?

Merci