std::text_encoding::literal
| static consteval text_encoding literal() noexcept; |
(seit C++26) | |
Konstruiert ein neues text_encoding Objekt, das die Kodierung von gewöhnlichen Zeichenliteralen repräsentiert. Es wird verwendet, um die Zeichenkodierung zu bestimmen, die auf gewöhnliche Zeichen- oder Zeichenkettenliterale angewendet wird (z. B. "Dies ist ein Literal").
Diese Funktion ist gelöscht, es sei denn, CHAR_BIT ist 8.
Inhalt |
[bearbeiten] Parameter
(keine)
[bearbeiten] Rückgabewert
Das Objekt, das die Darstellung der gewöhnlichen Literal-Kodierung enthält.
[bearbeiten] Hinweise
Diese Funktion kann durch die Konstruktion von text_encoding mit compilerspezifischen eingebauten Makros wie __clang_literal_encoding__ von Clang oder __GNUC_EXECUTION_CHARSET_NAME von GCC implementiert werden. Diese Makros, die zur Kompilierzeit bekannt sind, expandieren zu einem schmalen Zeichenkettenliteral, das den Namen des verwendeten schmalen Ausführungszeichensatzes (gewöhnliche Literal-Kodierung) enthält.
Der von literal() zurückgegebene Wert kann von Compileroptionen abhängen, wie z. B. -fexec-charset=encoding-name in GCC oder Clang oder /execution-charset:encoding-name in MSVC.
[bearbeiten] Beispiel
Dieses Beispiel demonstriert die Behauptung, dass die gewöhnliche Literal-Kodierung UTF-8 sein sollte.
#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}"; }