Dans le code C fourni, la fonction de modèle cal_size imprime la taille d'un argument de référence de tableau. Il est intrigant de voir comment le paramètre de modèle N reflète automatiquement la longueur du tableau transmis.
N n'est pas une variable initialisée ; c'est une constante au moment de la compilation. Grâce à un processus appelé déduction d'argument de modèle, T et N sont déduits de l'argument transmis à la fonction de modèle.
Considérez les appels suivants à cal_size :
void cal_size_int_6(int (&a)[6]) { std::cout << "size of array is: " << 6 << std::endl; }
void cal_size_int_1(int (&a)[1]) { std::cout << "size of array is: " << 1 << std::endl; }
Essentiellement, le modèle cal_size se traduit en fonctions spécialisées individuelles avec valeurs codées en dur de N et T. La fonction principale devient équivalente à :
int main() { cal_size_int_6(a); cal_size_int_1(b); }
En résumé, la déduction d'argument de modèle permet aux modèles de déduire la taille du tableau à partir du type d'argument. Le mécanisme sous-jacent consiste à générer des fonctions spécialisées pour chaque combinaison unique de types d'arguments, chacune avec ses propres valeurs N et T déterminées statiquement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!