Effects: Constructs a local variable start of type BidirectionalIterator and initializes it with the value of match.second.
If the iterator holds a zero-length match and start == end the operator sets *this to the end-of-sequence iterator and returns *this.
Otherwise, if the iterator holds a zero-length match the operator calls
regex_search(start, end, match, *pregex, flags | regex_constants::match_not_null
continuous). If the call returns true the operator returns *this. Otherwise the operator increments start and continues as if the most recent match was not a zero-length match.
In all cases in which the call to regex_search returns true, match.prefix().first shall be equal to the previous value of match.second, and for each index i in the half-open range [0, match.size()) for which match[i].matched is true, match[i].position() shall return distance(begin, match[i].first).
[ Note: This means that match[i].position() gives the offset from the beginning of the target sequence, which is often not the same as the offset from the sequence passed in the call to regex_search. — end note ]
It is unspecified how the implementation makes these adjustments.
[ Note: This means that a compiler may call an implementation-specific search function, in which case a user-defined specialization of regex_search will not be called. — end note ]
regex_iterator tmp = *this; ++(*this); return tmp;