I think you're misunderstanding the term multibyte character (which is, possibly, an ambiguous term). For example, from this page:
The term “multibyte character” is defined by ISO C to denote a byte
sequence that encodes an ideogram, no matter what encoding scheme is
employed. All multibyte characters are members of the “extended
character set.” A regular single-byte character is just a special case
of a multibyte character. The only requirement placed on the encoding
is that no multibyte character can use a null character as part of its
encoding.
Thus, the condition you quoted refers to character strings that are arrays of single byte elements, but which can contain characters that require more than one of those single-char elements for their representation.
The char16_t
type you use is a wide character, in which all representable characters are encoded as 2-byte values - even 'simple' stuff like an ASCII
'A', which would be 0x0041
.
EDIT: I realize that what I have written above is confusing! However, while searching for a basis for some clarification, I came across this Stack Overflow post: What is a multibyte character set? I can't really improve on the answers given there, so maybe it could be used as a 'duplicate'.