В этом подпункте определены требования к классам, представляющим признаки регулярных выражений. [ Note: Шаблон класса regex_traits, определенный в пункте [re.traits], удовлетворяет этим требованиям. ] — end note
Шаблон класса basic_regex, определенный в пункте [re.regex], требует набора связанных типов и функций для завершения определения его семантики. Эти типы и функции предоставляются как набор членов typedef-names и функций в параметре шаблона, traits используемом basic_regex шаблоном класса. В этом подпункте определяется семантика этих членов.
Чтобы специализировать шаблон класса basic_regex для символьного контейнера CharT и связанного с ним класса признаков регулярного выражения Traits, используйте basic_regex<CharT, Traits>.
В таблице 129 X обозначен класс признаков, определяющий типы и функции для символьного типа контейнера charT; u это объект типа X; v это объект типа const X; p это значение типа const charT*; I1 и I2 есть input iterators; F1 и F2 есть forward iterators; c это значение типа const charT; s это объект типа X::string_type; cs это объект типа const X::string_type; b это значение типа bool; I это значение типа int; cl является объектом типа X::char_class_typeи loc является объектом типа X::locale_type.
Выражение | Тип возврата | Утверждение / примечание до / после условия |
X::char_type | charT | Тип символьного контейнера, используемый в реализации шаблона класса basic_regex. |
X::string_type | basic_string<charT> | |
X::locale_type | Копируемый конструктивный тип | Тип, представляющий локаль, используемую классом свойств. |
X::char_class_type | bitmask type. | Тип битовой маски, представляющий определенную классификацию символов. |
X::length(p) | size_t | Дает наименьшее i такое, что p[i] == 0. Сложность линейна i . |
v.translate(c) | X::char_type | Возвращает такой символ, что для любого символа, d который должен считаться эквивалентным c then v.translate(c) == v.translate(d). |
v.translate_nocase(c) | X::char_type | Тогда для всех символов C , которые должны считаться эквивалентными, c когда сравнения должны выполняться без учета регистра v.translate_nocase(c) == v.translate_nocase(C). |
v.transform(F1, F2) | X::string_type | Возвращает ключ сортировки для последовательности символов, обозначенной диапазоном итератора [F1, F2) , так что если последовательность символов [G1, G2) сортируется до последовательности символов, [H1, H2) тогда v.transform(G1, G2) < v.transform(H1, H2). |
v.transform_primary(F1, F2) | X::string_type | Возвращает ключ сортировки для последовательности символов, обозначенной диапазоном итератора [F1, F2) , так что если последовательность символов [G1, G2) сортируется до последовательности [H1, H2) символов, тогда регистр символов не учитывается v.transform_primary(G1, G2) < v.transform_primary(H1, H2). |
v.lookup_collatename(F1, F2) | X::string_type | Возвращает последовательность символов, представляющую элемент сортировки, состоящий из последовательности символов, обозначенной диапазоном итератора [F1, F2). Возвращает пустую строку, если последовательность символов не является допустимым элементом сортировки. |
v.lookup_classname(F1, F2, b) | X::char_class_type | Преобразует последовательность символов, указанную диапазоном итератора, [F1, F2) в значение типа битовой маски, которое впоследствии может быть передано isctype. Значения, возвращаемые из, lookup_classname могут быть побитовыми или объединены вместе; результирующее значение представляет членство в любом из соответствующих классов символов. Если b есть true, то возвращаемая битовая маска подходит для сопоставления символов независимо от их регистра. Возвращает, 0 если последовательность символов не является именем класса символов, распознаваемого X. Возвращаемое значение не должно зависеть от регистра символов в последовательности. |
v.isctype(c, cl) | bool | Возвращает, true если персонаж c является членом одного из классов символов, обозначенных cl, в false противном случае. |
v.value(c, I) | int | Возвращает значение, представленное цифрой c в базе, I если символ c является допустимой цифрой в базе I; в противном случае возвращается -1. [ Note: Значение I будет только 8, 10 или 16. ] — end note |
u.imbue(loc) | X::locale_type | Наполняет u языковой стандарт loc и возвращает предыдущий языковой стандарт, который использовался, u если он есть. |
v.getloc() | X::locale_type | Возвращает текущий языковой стандарт v, если таковой имеется. |
[ Note: Шаблон класса regex_traits удовлетворяет требованиям для класса признаков регулярного выражения, если он специализирован для char или wchar_t. Этот шаблон класса описан в заголовке <regex>и описан в пункте [re.traits]. ] — end note