Maison > développement back-end > C++ > Les chaînes de style C peuvent-elles être utilisées comme arguments de modèle en C ?

Les chaînes de style C peuvent-elles être utilisées comme arguments de modèle en C ?

Susan Sarandon
Libérer: 2024-10-30 17:54:31
original
647 Les gens l'ont consulté

Can C-Style Strings Be Used as Template Arguments in C  ?

Les chaînes de style C peuvent-elles être des arguments de modèle ?

Votre tentative d'instancier un modèle à l'aide d'une chaîne de style C échoue avec une erreur due à l'utilisation non valide d'une chaîne littérale comme argument de modèle.

Bien que les chaînes de style C ne puissent pas servir directement d'arguments de modèle, il existe des approches alternatives :

Utilisez un pointeur vers un Chaîne constante

Une solution de contournement consiste à utiliser un pointeur vers une chaîne constante comme argument de modèle :

<code class="c++">template <char const *str>
struct X {
    const char *GetString() const {
        return str;
    }
};

char global_string[] = "String";

int main() {
    X<global_string> x;
    cout << x.GetString();
}
Copier après la connexion

Mise à jour : les littéraux de chaîne comme arguments de modèle avec C 11

Avec C 11 et versions ultérieures, il est possible d'utiliser des chaînes littérales comme arguments de modèle en utilisant des packs de caractères :

<code class="c++">template <char ...c>
struct X {
    const char (*GetString)() {
        return [](char*... s) { return s; }(c...);
    }
};

int main() {
    X<"S", "t", "r", "i", "n", "g"> x;
    cout << x.GetString();
}</code>
Copier après la connexion

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!

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