Cubby has already answered this question. Here is a couple of additional information, since the definition of the standard does not really explain itself.
A wctype_t represents a locale-specific classification character. Thus, this is not about the characters, but about their classification (for example, the old isalpha (), isalnum (), ..). The wctype_t values ββare used by the iswctype () function to validate a wide character. Example (C11, section 7.30.2.2.1):
iswctype(wc, wctype("alnum")) // iswalnum(wc) iswctype(wc, wctype("alpha")) // iswalpha(wc) iswctype(wc, wctype("blank")) // iswblank(wc) iswctype(wc, wctype("lower")) // iswlower(wc) ...
Similarly, the wctrans_t view represents language bindings of characters. . Thus, this does not concern the character set, but it is a mapping from one type of wide characters to the corresponding tone (for example, like the old toupper (), lower (), ...). The mappings are described in section 7.30.3 of standard C11), here are some examples:
towctrans(wc, wctrans("tolower")) // towlower(wc) towctrans(wc, wctrans("toupper")) // towupper(wc)
The definition of wchar_t that you mention seems to me misleading, although wchar_t is also an integer.
Here, as defined in MSVC13:
typedef unsigned short wint_t; typedef unsigned short wctype_t; typedef wchar_t wctrans_t;