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(); }
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!