using category = int;
Category  | Includes facets  | 
collate  | collate<char>, collate<wchar_t>  | 
ctype  | ctype<char>, ctype<wchar_t>  | 
codecvt<char, char, mbstate_t>  | |
codecvt<wchar_t, char, mbstate_t>  | |
monetary  | moneypunct<char>, moneypunct<wchar_t>  | 
moneypunct<char, true>, moneypunct<wchar_t, true>  | |
money_get<char>, money_get<wchar_t>  | |
money_put<char>, money_put<wchar_t>  | |
numeric  | numpunct<char>, numpunct<wchar_t>  | 
num_get<char>, num_get<wchar_t>  | |
num_put<char>, num_put<wchar_t>  | |
time  | time_get<char>, time_get<wchar_t>  | 
time_put<char>, time_put<wchar_t>  | |
messages  | messages<char>, messages<wchar_t>  | 
Category  | Includes facets  | 
collate  | collate_byname<char>, collate_byname<wchar_t>  | 
ctype  | ctype_byname<char>, ctype_byname<wchar_t>  | 
codecvt_byname<char, char, mbstate_t>  | |
codecvt_byname<wchar_t, char, mbstate_t>  | |
monetary  | moneypunct_byname<char, International>  | 
moneypunct_byname<wchar_t, International>  | |
money_get<C, InputIterator>  | |
money_put<C, OutputIterator>  | |
numeric  | numpunct_byname<char>, numpunct_byname<wchar_t>  | 
num_get<C, InputIterator>, num_put<C, OutputIterator>  | |
time  | time_get<char, InputIterator>  | 
time_get_byname<char, InputIterator>  | |
time_get<wchar_t, InputIterator>  | |
time_get_byname<wchar_t, InputIterator>  | |
time_put<char, OutputIterator>  | |
time_put_byname<char, OutputIterator>  | |
time_put<wchar_t, OutputIterator>  | |
time_put_byname<wchar_t, OutputIterator>  | |
messages  | messages_byname<char>, messages_byname<wchar_t>  |