cpp/language/character literal

Explanation
@1@ Ordinary character literal, e.g. or  or. Such literal has type and the value equal to.

@2@ UTF-8 character literal, e.g. . Such literal has type and the value equal to ISO/IEC 10646 code point value of, provided that the code point value is representable with a single UTF-8 code unit (that is,  is in the range 0x0-0x7F, inclusive).

@3@ UTF-16 character literal, e.g., but not. Such literal has type and the value equal to ISO/IEC 10646 code point value of, provided that the code point value is representable with a single UTF-16 code unit (that is,  is in the range 0x0-0xFFFF, inclusive).

@4@ UTF-32 character literal, e.g. or. Such literal has type and the value equal to ISO/IEC 10646 code point value of.

@5@ Wide character literal, e.g. or. Such literal has type and the value equal to.

@6@ Ordinary multicharacter literal, e.g., is conditionally-supported, has type and implementation-defined value.

@7@ Wide multicharacter literal, e.g., is conditionally-supported, has type and implementation-defined value.

Non-encodable character literals
In, given that is not a numeric escape sequence (see below):
 * In, if is not representable , e.g.  or , the character literal is conditionally-supported, has type  and implementation-defined value.
 * In, if is not representable with a single UTF-8 /UTF-16 /UTF-32  code unit, the character literal is ill-formed.

Numeric escape sequences
Numeric (octal and hexadecimal) escape sequences can be used for specifying the value of the character.