OVH Cloud OVH Cloud

template

1 réponse
Avatar
PurL
Bonjour,

Quand on rentre dans une fonction template :

template <class type> void MaFonction (type data)
{
}

comment savoir, dans celle-ci, quel type l'appelant a utilisé ?

qqch du stype : if (type == int)

Merci,

PurL

1 réponse

Avatar
Christophe de VIENNE
Bonjour,

Quand on rentre dans une fonction template :

template <class type> void MaFonction (type data)
{
}

comment savoir, dans celle-ci, quel type l'appelant a utilisé ?

qqch du stype : if (type == int)


La réponse directe, c'est typeid(data) == typeid(int).

Mais avant de te jeter dessus : pourquoi as-tu besoin de connaître le
type ? Si c'est pour faire un traitement particulier pour le type int
par exemple, une meilleure solution est de spécialiser ta fonction :

template <class type> void MaFonction (type data);

template <> void MaFonction<int>( int data )
{
// implémentation spécifique pour les int
}

template <class type> void MaFonction (type data)
{
// implémentation générique.
}


int main()
{
int i;
float f;
MaFonction(i); // là c'est la première implémentation
// qui est instanciée (utilisée) par le
// compilateur

MaFonction(f); // Ici la 2ème.
}






A+

Christophe