Template - type de retour en fonction du template
Bonjour,
Je travaille avec fftw, dont le type complexe n'est autre qu'un tableau de deux éléments. Le problème est que j'ai créé une classe matrice templaté (oui parce que je manipule aussi des doubles etc.), la définition de cette classe est grosso modo la suivante :
Code:
1 2 3 4 5 6 7 8 9 10
|
template<typename T>
class Matrix
{
public:
....
T operator() (uint i, uint j) const; // lecture
T& operator() (uint i, uint j); // écriture
...
}; |
Le problème c'est que si T = fftw_complex = double[2], les opérateurs renvoient un tableau et le compilateur considère ça comme une erreur (on ne peut pas vraiment luit en vouloir en même temps...). Du coup pour contourner le problème, je me demandais s'il était possible de faire un truc genre :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
template<typename T>
class Matrix
{
public:
....
template_if<T == fttw_complex>
{
std::complex<double> operator() (uint i, uint j) const; // lecture
std::complex<double>& operator() (uint i, uint j); // écriture
}
template_else
{
T operator() (uint i, uint j) const; // lecture
T& operator() (uint i, uint j); // écriture
}
...
}; |
Merci d'avance.