std::text_encoding:: literal
Character conversions | ||||
String and stream conversions | ||||
(
C++11/17/26*
)
|
||||
(
C++11/17/26*
)
|
Text encoding identifications | |||||
|
|||||
Unicode conversion facets | |||||
(
C++11/17/26*
)
|
|||||
(
C++11/17/26*
)
|
|||||
(
C++11/17/26*
)
|
|||||
(
C++11/17/26*
)
|
Member functions | ||||
Creation | ||||
text_encoding::literal
|
||||
Observers | ||||
Helpers | ||||
Non-member functions | ||||
Member types | ||||
Helper classes | ||||
static
consteval text_encoding literal
(
)
noexcept
;
|
(since C++26) | |
Constructs a new
text_encoding
object representing the
ordinary character literal encoding
. It is used to determine the character encoding applied to ordinary character or string literals (e.g.
"This is literal"
).
This function is deleted unless the CHAR_BIT is 8 .
Parameters
(none)
Return value
The object holding the representation of the ordinary literal encoding.
Notes
This function can be implemented by constructing
text_encoding
with compiler-specific builtin macros such as
__clang_literal_encoding__
from Clang, or
__GNUC_EXECUTION_CHARSET_NAME
from GCC. These macros, which are known at compile-time, expand to a narrow string literal containing the name of the narrow execution character set used (ordinary literal encoding).
The value returned by
literal
(
)
may depend on compiler options such as
-fexec-charset=
encoding-name
in GCC or Clang or
/execution-charset:
encoding-name
in MSVC.
Example
This example demonstrates the assertion that the ordinary literal encoding should be 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}"; }