25 Localization library [localization]

25.3 Locales [locales]

25.3.1 Class locale [locale]

25.3.1.1 locale types [locale.types]

25.3.1.1.1 Type locale​::​category [locale.category]

using category = int;

Valid category значения включают в себяlocale член битовая маска элементы collate, ctype, monetary, numeric, time, и messages, каждый из которых представляет одну категорию локали. Кроме того, locale константа битовой маски элемента none определяется как ноль и не представляет категории. И locale постоянный член битовой маски all определяются таким образом, что выражение

(collate | ctype | monetary | numeric | time | messages | all) == all

есть true, и представляет собой объединение всех категорий. Кроме того, выражение (X | Y), где X и Y каждое представляет одну категорию, представляет собой объединение двух категорий.

locale Функции-члены, ожидающие category аргумента, требуют одного из category значений, определенных выше, или объединения двух или более таких значений. Такое category значение определяет набор категорий локали. Каждая категория языкового стандарта, в свою очередь, определяет набор аспектов языкового стандарта, включая, по крайней мере, те, которые показаны в таблице 69.

Таблица 69 - аспекты категории языкового стандарта
КатегорияВключает грани
сопоставлять collate<char>, collate<wchar_­t>
ctype ctype<char>, ctype<wchar_­t>
codecvt<char, char, mbstate_­t>
codecvt<char16_­t, char, mbstate_­t>
codecvt<char32_­t, char, mbstate_­t>
codecvt<wchar_­t, char, mbstate_­t>
денежный 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>
числовой numpunct<char>, numpunct<wchar_­t>
num_­get<char>, num_­get<wchar_­t>
num_­put<char>, num_­put<wchar_­t>
время time_­get<char>, time_­get<wchar_­t>
time_­put<char>, time_­put<wchar_­t>
Сообщения messages<char>, messages<wchar_­t>

Для любой локали loc , созданной или возвращенной locale​::​classic(), и любого аспекта, Facet показанного в таблице 69, has_­facet<Facet>(loc) есть true. Каждая locale функция-член, которая принимает locale​::​category аргумент, работает с соответствующим набором аспектов.

Реализация требуется для предоставления этих специализаций для шаблонов аспектов, определенных как члены категории, и для тех, которые показаны в таблице 70.

Таблица 70 - Необходимые специализации
КатегорияВключает грани
сопоставлять collate_­byname<char>, collate_­byname<wchar_­t>
ctype ctype_­byname<char>, ctype_­byname<wchar_­t>
codecvt_­byname<char, char, mbstate_­t>
codecvt_­byname<char16_­t, char, mbstate_­t>
codecvt_­byname<char32_­t, char, mbstate_­t>
codecvt_­byname<wchar_­t, char, mbstate_­t>
денежный moneypunct_­byname<char, International>
moneypunct_­byname<wchar_­t, International>
money_­get<C, InputIterator>
money_­put<C, OutputIterator>
числовой numpunct_­byname<char>, numpunct_­byname<wchar_­t>
num_­get<C, InputIterator>, num_­put<C, OutputIterator>
время 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_­byname<char>, messages_­byname<wchar_­t>

Предоставленная реализация членов фасетов num_­get<charT> и num_­put<charT> вызовов use_­facet<F>(l) только для фасетов F типов numpunct<charT> и ctype<charT>, а для локали l значение, полученное путем вызова member getloc() для ios_­base& аргумента этих функций.

В объявлениях фасетов параметр шаблона с именем InputIterator или OutputIterator указывает набор всех возможных специализаций параметров, которые удовлетворяют требованиям итератора ввода или итератора вывода, соответственно ([iterator.requirements]). Параметр шаблона с именем C представляет собой набор типов , содержащих char, wchar_­tи любых других реализации определенных типов символов , которые удовлетворяют требования , предъявляемые к характеру , на которых любые из компонентов iostream может быть реализованным. Параметр шаблона с именем International представляет собой набор всех возможных специализаций для параметра типа bool.