regex_iterator& operator++();
Effects: Создает локальную переменную start типа BidirectionalIterator и инициализирует ее значением match[0].second.
Если итератор содержит совпадение нулевой длины, а start == end оператор устанавливает *this итератор конца последовательности и возвращается *this.
В противном случае, если итератор содержит совпадение нулевой длины, оператор вызывает:
regex_search(start, end, match, *pregex, flags | regex_constants::match_not_null | regex_constants::match_continuous)
Если вызов вернул, true оператор вернется *this. В противном случае оператор увеличивает start и продолжает работу, как если бы последнее совпадение не было совпадением нулевой длины.
Если самый последний матч не был матч нулевой длины, оператор устанавливает flags на flags | regex_constants::match_prev_avail и вызовы regex_search(start, end, match, *pregex, flags). Если вызов возвращает false набор итераторов в итератор *this конца последовательности. Затем итератор возвращается *this.
Во всех случаях, когда вызов regex_search возвращается true, match.prefix().first должно быть равно предыдущему значению match[0].second, и для каждого индекса i в полуоткрытом диапазоне, [0, match.size()) для которого match[i].matched есть true, match.position(i) должно возвращаться distance(begin, match[i].first).
[ Note: Это означает, что это match.position(i) дает смещение от начала целевой последовательности, которое часто не совпадает с смещением от последовательности, переданной в вызове regex_search. ] — end note
[ Note: Это означает, что компилятор может вызвать функцию поиска, зависящую от реализации, и в этом случае определенная пользователем специализация regex_search не будет вызываться. ] — end note
regex_iterator operator++(int);