Spec-Zone.ru › C++

std::text_encoding::literal

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}";
}

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/text/text_encoding/literal

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API