std::text_encoding::literal
static consteval text_encoding literal()noexcept; | (desde C++26) | |
Construye un nuevo text_encoding
que representa la codificación literal de caracteres ordinarios. Se utiliza para determinar la codificación de caracteres aplicada a caracteres ordinarios o literales de cadena. (p. ej., "Esto es literal").
Esta función se marca como eliminada (= delete) a menos que CHAR_BIT sea 8.
Contenido |
[editar]Parámetros
(Ninguno)
[editar]Valor de retorno
El objeto que contiene la representación de la codificación de literal ordinario.
[editar]Notas
Esta función se puede implementar construyendo text_encoding
con macros integradas específicas del compilador como __clang_literal_encoding__
de Clang, o __GNUC_EXECUTION_CHARSET_NAME
de GCC. Estas macros, que se conocen en tiempo de compilación, se expanden a un literal de cadena estrecho que contiene el nombre del juego de caracteres de ejecución estrecho usado (la codificación de literal ordinario).
El valor devuelto por literal() puede depender de las opciones del compilador, tales como -fexec-charset=encoding-name
en GCC o Clang, o /execution-charset:encoding-name
en MSVC.
[editar]Ejemplo
Este ejemplo demuestra la afirmación de que la codificación del literal ordinario debe ser UTF-8.
#include <text_encoding> static_assert(std::text_encoding::literal()== std::text_encoding::UTF8); int main(){// Si el literal de codificación es UTF-8, entonces este literal de cadena// sin prefijo se codifica como UTF-8constexprchar green_heart[]="\N{CORAZÓN VERDE}"; // este literal de cadena con prefijo siempre se codifica como UTF-8// independientemente del literal de codificaciónconstexpr char8_t green_heart_u8[]= u8"\N{CORAZÓN VERDE}";}