char16_t and char32_t are useless. The C standard declares functions in &lt;uchar.h&gt; for converting them to and from char, but not wchar_t. The conversion to char may be lossy depending on the platform. No other interfaces uses those types. There&#x27;s no portably lossless path converting them to and from wchar_t.