The specializations required
in Table 
104 (
[locale.category])
convert the implementation-defined native character set
.codecvt<char, char, mbstate_t> implements a degenerate conversion;
it does not convert at all
.  The specialization 
codecvt<char16_t, char8_t, mbstate_t>
converts between the UTF-16 and UTF-8 encoding forms, and
the specialization 
codecvt<char32_t, char8_t, mbstate_t>
converts between the UTF-32 and UTF-8 encoding forms
.codecvt<wchar_t, char, mbstate_t>
converts between the native character sets for ordinary and wide characters
.  Specializations on 
mbstate_t
perform conversion between encodings known to the library implementer
.Other encodings can be converted by specializing on
a program-defined 
stateT type
.Objects of type 
stateT can contain any state
that is useful to communicate to or from
the specialized 
do_in or 
do_out members
.