Maison > développement back-end > C++ > Les littéraux de chaîne peuvent-ils être transmis en tant qu'arguments de modèle non-type ?

Les littéraux de chaîne peuvent-ils être transmis en tant qu'arguments de modèle non-type ?

Barbara Streisand
Libérer: 2024-11-20 01:27:03
original
926 Les gens l'ont consulté

Can String Literals be Passed as Non-Type Template Arguments?

Passer des littéraux de chaîne à des paramètres de modèle de classe non-type

Question :

Un littéral de chaîne peut-il être transmis en tant que argument non-type à un modèle de classe, comme dans une déclaration comme my_class<"string">?

Réponse :

En passant directement des littéraux de chaîne comme non Les arguments de modèle -type ne sont pas possibles, il existe une solution qui s'en rapproche étroitement.

Vous pouvez utiliser un paramètre de modèle non-type de type const char* et lui transmettre une variable const char[] avec une liaison statique. Cette approche partage des similitudes avec le passage direct de littéraux de chaîne.

Voici un exemple compilable :

#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

Le code ci-dessus déclare un modèle de classe cts avec un paramètre de modèle non-type str qui prend une constante pointeur de caractère. La variable teststr, définie avec une liaison statique, contient la chaîne littérale et est transmise à l'instanciation du modèle.

Cette méthode est une alternative viable au passage direct de chaînes littérales en tant qu'arguments de modèle non-type.

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