Bonjour � tous,

Voil�, j'ai un gros soucis de C++, qui vise les plus experts d'entre vous, m�me si le principe est simple.
Je voudrais rendre un operateur d'une classe utilisable sans qu'il soit "auto-d�fini".
Un exemple sera plus simple � comprendre :
Code C : 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
17
18
19
20
21
22
23
template<typename T>
class XX
{
  public:
    XX() {}
    T* operator()() { return new T; }
};
 
class YY
{
  public:
    YY() {}	
    template<typename T>
    T* operator()() { return new T; }
};
 
int main()
{
  int* x = XX<int>()();
  int* y = YY()<int>();
 
  return 0;
}

Donc, ici, la classe XX est utilisable tel quel pour remplir la variable x.
Par contre, �a ne m'interesse pas, et je voudrais pouvoir utiliser la surcharge par template uniquement sur la fonction (et non sur toute la classe), c'est � dire, la forme de YY.

Il n'y a pas de soucis avec la d�finition de classe, par contre, un appel direct de la forme ci-dessus ne compile m�me pas. Cette syntaxe fonctionne :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
int* y = YY().operator()<int>();
Mais je perd l'int�r�t de l'op�rateur.... Quel syntaxe utiliser pour rendre cela possible ?

Merci.
Snark.