Déduction de type pour methode statique d'une classe template
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:
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 !