Namespaces
Variants

std::text_encoding:: literal

From cppreference.net
static consteval text_encoding literal ( ) noexcept ;
(desde C++26)

Construye un nuevo objeto text_encoding que representa la codificación de literales de caracteres ordinarios . Se utiliza para determinar la codificación de caracteres aplicada a literales de caracteres o cadenas ordinarias (por ejemplo, "This is literal" ).

Esta función se elimina a menos que CHAR_BIT sea 8 .

Contenidos

Parámetros

(ninguno)

Valor de retorno

El objeto que contiene la representación de la codificación literal ordinaria.

Notas

Esta función puede implementarse construyendo text_encoding con macros intrínsecas 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 estrecha que contiene el nombre del conjunto de caracteres de ejecución estrecho utilizado (codificación literal ordinaria).

El valor devuelto por literal ( ) puede depender de las opciones del compilador como -fexec-charset= encoding-name en GCC o Clang o /execution-charset: encoding-name en MSVC.

Ejemplo

Este ejemplo demuestra la aserción de que la codificación literal ordinaria debería ser UTF-8.

#include <text_encoding>
static_assert(std::text_encoding::literal() == std::text_encoding::UTF8);
int main()
{
    // if the literal encoding is UTF-8, then this unprefixed string literal is
    // encoded as UTF-8
    constexpr char green_heart[] = "\N{GREEN HEART}";
    // this prefixed string literal is always encoded as UTF-8 regardless of the
    // literal encoding
    constexpr char8_t green_heart_u8[] = u8"\N{GREEN HEART}";
}