Avantages de la déduction automatique des paramètres de modèle en C 17
C 17 introduit l'option
Extension naturelle de auto pour l'instanciation de modèle
Similaire au mot-clé auto utilisé pour la déclaration de variable, < automatique> dans les paramètres du modèle permet de déduire le type des paramètres non-types au moment de l'instanciation. Cela élimine le besoin de spécifier explicitement le type de paramètre, comme le montre l'exemple ci-dessous :
auto v1 = constant<5>; // v1 == 5, decltype(v1) is int auto v2 = constant<true>; // v2 == true, decltype(v2) is bool auto v3 = constant<'a'>; // v3 == 'a', decltype(v3) is char
Confort amélioré
Remplacement des déclarations de type explicites par
template <typename Type, Type value> constexpr Type constant = value; constexpr auto const IntConstant42 = constant<int, 42>;
Ce code peut être réécrit avec
template <auto value> constexpr auto constant = value; constexpr auto const IntConstant42 = constant<42>;
Concision du code améliorée
template <auto ... vs> struct HeterogenousValueList {}; using MyList1 = HeterogenousValueList<42, 'X', 13u>; template <auto v0, decltype(v0) ... vs> struct HomogenousValueList {}; using MyList2 = HomogenousValueList<1, 2, 3>;
En comparaison, obtenir la même fonctionnalité dans la version antérieure à C 17 nécessiterait des constructions plus verbeuses et alambiquées impliquant des modèles supplémentaires.
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!