Bonjour,

J'ai besoin de définir des méthodes statiques templates qui utilisent le scope d'une classe template et dont les parametres sont déduis à la compilation. Illustration :
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
17
18
19
20
21
22
23
24
25
26
 
template <typename T>
class type
{
public:
 
   template<typename U>
   static type<U> operation(const type<U>& x, const type<U>& y)
   {
      // par exemple
      return x.a*y.a;
   }
 
   T a;
};
 
 
// et un appel
type<float> a = 5.0f;
type<float> b = 4.0f;
type<float> c = type::operation(a,b); // c = 20.0f
// et non (comme le voudrais g++)
type<float> c = type<float>::operation(a,b); // c = 20.0f
// ou encore
type<int> c = type<float>::operation(a,b); // c = 20.0f
// etc ...
Le scope est important, je ne veux pas définir ce type de methode a l'extérieur de la classe. Est ce que c'est réalisable ? Si oui comment ?

Merci d'avance !