Procédure de commande partielle dans la déduction de modèle
La procédure de commande partielle dans la déduction de modèle détermine la relation de spécialisation entre deux modèles de fonction. Elle comporte deux étapes :
Étape 1 : Transformation
Pour chaque modèle, la procédure de commande partielle crée un "type de fonction transformé" en remplaçant tous les types, non-types et des paramètres de modèle de modèle avec des types uniques et inutilisés.
Étape 2 : Comparaison
Les types de fonctions transformés sont comparés de deux manières :
Si l'une des correspondances réussit et que l'autre échoue, alors le modèle avec la correspondance réussie est considéré comme plus spécialisé. Si aucune des correspondances ne réussit, aucun modèle n'est plus spécialisé.
Exemple :
Considérez les deux modèles de fonction suivants :
template<typename T, typename U> void foo(T, U); // Template 1 template<typename T> void foo(T const*, X<T>); // Template 2
Pour déterminer quel modèle est le plus spécialisé, nous :
1. Créer des types de fonctions transformées :
2. Comparez les types de fonctions transformées :
Conclusion : Le modèle 2 est plus spécialisé que le modèle 1.
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!