std::text_encoding:: literal
|
static
consteval text_encoding literal
(
)
noexcept
;
|
(depuis C++26) | |
Construit un nouvel objet
text_encoding
représentant
l'encodage des littéraux de caractères ordinaires
. Il est utilisé pour déterminer l'encodage de caractères appliqué aux littéraux de caractères ou de chaînes ordinaires (par exemple
"This is literal"
).
Cette fonction est supprimée sauf si CHAR_BIT est 8 .
Table des matières |
Paramètres
(aucun)
Valeur de retour
L'objet contenant la représentation de l'encodage littéral ordinaire.
Notes
Cette fonction peut être implémentée en construisant
text_encoding
avec des macros intégrées spécifiques au compilateur telles que
__clang_literal_encoding__
de Clang, ou
__GNUC_EXECUTION_CHARSET_NAME
de GCC. Ces macros, qui sont connues au moment de la compilation, se développent en un littéral de chaîne étroit contenant le nom du jeu de caractères d'exécution étroit utilisé (encodage de littéral ordinaire).
La valeur renvoyée par
literal
(
)
peut dépendre des options du compilateur telles que
-fexec-charset=
encoding-name
dans GCC ou Clang ou
/execution-charset:
encoding-name
dans MSVC.
Exemple
Cet exemple démontre l'assertion que l'encodage littéral ordinaire devrait être UTF-8.
#include <text_encoding> static_assert(std::text_encoding::literal() == std::text_encoding::UTF8); int main() { // si l'encodage littéral est UTF-8, alors ce littéral de chaîne sans préfixe est // encodé en UTF-8 constexpr char green_heart[] = "\N{GREEN HEART}"; // ce littéral de chaîne préfixé est toujours encodé en UTF-8 indépendamment de // l'encodage littéral constexpr char8_t green_heart_u8[] = u8"\N{GREEN HEART}"; }