Exercice 124
Énoncé
Soit cette définition de patron de fonctions :
template T fct (T a, U b, T c)
{ .....
}
Avec les déclarations suivantes :
int n, p, q ;
float x ;
char t[20] ;
char c ;
Quels sont les appels corrects et, dans ce cas, quels sont les prototypes des fonctions
instanciées ?
fct (n, p, q) ; // appel I
fct (n, x, q) ; // appel II
fct (x, n, q) ; // appel III
fct (t, n, &c) ; // appel IV
a. L’appel I est correct ; il instancie la fonction :
int fct (int, int, int)
b. L’appel II est correct ; il instancie la fonction :
int fct (int, float, int)
c. L’appel III est incorrect.
d. L’appel IV est correct selon la norme. Il instancie la fonction :
char * fct (char *, int, char *)
L’appelþIV n’était pas accepté dans la version 3 qui ne considérait pas char * comme
une correspondance absolue pour char[20].
305
Énoncé
Soit cette définition de patron de fonctions :
template
{ .....
}
Avec les déclarations suivantes :
int n, p, q ;
float x ;
char t[20] ;
char c ;
Quels sont les appels corrects et, dans ce cas, quels sont les prototypes des fonctions
instanciées ?
fct (n, p, q) ; // appel I
fct (n, x, q) ; // appel II
fct (x, n, q) ; // appel III
fct (t, n, &c) ; // appel IV
a. L’appel I est correct ; il instancie la fonction :
int fct (int, int, int)
b. L’appel II est correct ; il instancie la fonction :
int fct (int, float, int)
c. L’appel III est incorrect.
d. L’appel IV est correct selon la norme. Il instancie la fonction :
char * fct (char *, int, char *)
L’appelþIV n’était pas accepté dans la version 3 qui ne considérait pas char * comme
une correspondance absolue pour char[20].
305
