Maison > développement back-end > C++ > le corps du texte

Pouvez-vous transmettre des littéraux de chaîne en tant qu'arguments de modèle non-type ?

DDD
Libérer: 2024-11-17 09:04:03
original
153 Les gens l'ont consulté

Can You Pass String Literals as Non-Type Template Arguments?

Passer des littéraux de chaîne en tant qu'arguments de modèle non-type

Énoncé du problème :

Pouvez-vous définir un modèle de classe avec un paramètre de modèle non-type qui accepte une chaîne littérale, telle que my_class<"string">?

Solution :

Bien que ce ne soit pas le cas Il est possible de transmettre directement une chaîne littérale en tant que paramètre de modèle non-type, vous pouvez obtenir un effet similaire en déclarant un paramètre const char* et en lui passant une variable const char[] avec une liaison statique.

Exemple de code :

#include <iostream>

template<const char *str>
struct cts {
    void p() {std::cout << str;}
};

static const char teststr[] = "Hello world!";
int main() {
    cts<teststr> o;
    o.p();
}
Copier après la connexion

Explication :

Dans ce code, le paramètre de modèle str est un const char*, qui peut pointer vers une chaîne littérale ou une variable chaîne. La variable teststr est déclarée comme un const char[] statique avec la chaîne littérale "Hello world!". En passant teststr comme argument de modèle, vous pouvez accéder efficacement au littéral de chaîne dans le modèle de classe.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal