The types char16_t and char32_t are distinct types rather than typedefs to existing integral types. The tokens char16_t and char32_t are keywords in this International Standard ([lex.key]). They do not appear as macro names defined in <cuchar> ([cuchar.syn]).