Maison > développement back-end > C++ > La métaprogrammation peut-elle aider à définir des modèles basés sur la conversion de chaînes ?

La métaprogrammation peut-elle aider à définir des modèles basés sur la conversion de chaînes ?

Susan Sarandon
Libérer: 2024-11-09 14:12:02
original
1038 Les gens l'ont consulté

Can Metaprogramming Help Define Templates Based on String Conversion?

Métaprogrammation : critères alternatifs de sélection de modèles pour la définition de fonctions

Cette question explore le concept de définition d'un modèle basé sur la capacité d'un type à être converti à une chaîne. Le code original utilise le trait de type is_arithmetic, mais il est suggéré d'utiliser à la place un critère qui évalue si to_string est défini pour le type.

Cependant, le contraire de ce critère, déterminant quand to_string n'est pas défini, prouve stimulant. Le code suivant échoue :

template<typename T> enable_if_t<decltype(to_string(T{})::value, string> (T t){
    // ...
}
Copier après la connexion

Pour résoudre ce problème, la réponse propose d'utiliser le trait de type void_t de Walter Brown, qui permet la création des éléments suivants :

template<typename T, typename = void>
struct has_to_string
: std::false_type { };

template<typename T>
struct has_to_string<T, 
    void_t<decltype(std::to_string(std::declval<T>()))>
    > 
: std::true_type { };
Copier après la connexion

Ce trait de type évalue efficacement si to_string est défini pour un type donné, fournissant ainsi un critère de sélection de modèle alternatif qui s'aligne plus précisément sur l'intention d'origine.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal