Maison > développement back-end > C++ > Les variables constexpr peuvent-elles contenir des chaînes en C ?

Les variables constexpr peuvent-elles contenir des chaînes en C ?

Patricia Arquette
Libérer: 2024-11-27 07:35:15
original
504 Les gens l'ont consulté

Can constexpr Variables Hold Strings in C  ?

Variables constexpr et littéraux de chaîne

En C, les variables constexpr doivent avoir un type littéral, ce qui signifie qu'elles ne peuvent pas contenir d'objets avec des destructeurs non triviaux . Lorsque vous tentez de définir une variable constexpr std::string en C 11, une erreur est rencontrée en raison du destructeur non trivial de std::string.

Alternative pour les littéraux de chaîne constexpr

Depuis C 20, il est possible d'utiliser std::string dans les expressions constexpr sous certaines conditions. Plus précisément, la std::string doit être détruite avant la fin de l'évaluation constante.

Exemple :

constexpr std::size_t n = std::string("hello, world").size();
Copier après la connexion

Dans cet exemple, la std::string sera être détruit dans le cadre de l'expression évaluant la taille, le code est donc valide.

String_View Alternative

Une autre option pour utiliser des objets de type chaîne dans les expressions constexpr consiste à utiliser std::string_view introduit dans C 17.

Exemple :

constexpr std::string_view sv = "hello, world";
Copier après la connexion

std::string_view représente un objet de type chaîne avec un accès immuable et non propriétaire à une séquence sous-jacente de personnages. Il n'a pas de destructeur non trivial, ce qui le rend adapté à une utilisation dans les expressions constexpr.

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