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