Namespaces
Variants

std::text_encoding:: literal

From cppreference.net
static consteval text_encoding literal ( ) noexcept ;
(начиная с C++26)

Создает новый объект text_encoding , представляющий кодировку обычных символьных литералов . Используется для определения кодировки символов, применяемой к обычным символьным или строковым литералам (например, "This is literal" ).

Эта функция удалена, если CHAR_BIT не равен 8 .

Содержание

Параметры

(нет)

Возвращаемое значение

Объект, содержащий представление кодировки обычного литерала.

Примечания

Эта функция может быть реализована путем создания text_encoding с использованием компилятор-специфичных встроенных макросов, таких как __clang_literal_encoding__ из Clang, или __GNUC_EXECUTION_CHARSET_NAME из GCC. Эти макросы, известные на этапе компиляции, раскрываются в узкий строковый литерал, содержащий название используемого узкого набора символов выполнения (обычная кодировка литералов).

Значение, возвращаемое literal ( ) может зависеть от параметров компилятора, таких как -fexec-charset= encoding-name в GCC или Clang, или /execution-charset: encoding-name в MSVC.

Пример

Этот пример демонстрирует утверждение, что обычная кодировка литералов должна быть 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}";
}