sub_match<BidiIterator>::operator int()const { BidiIterator i = first; BidiIterator j = second; if(i == j)raise_regex_exception("Bad sub-expression"); int neg = 1; if((i != j) && (*i == '-')) { neg = -1; ++i; } neg *= re_detail::do_toi(i, j, *i); if(i != j)raise_regex_exception("Bad sub-expression"); return neg; }
sub_match<BidiIterator>::operator unsigned int()const { BidiIterator i = first; BidiIterator j = second; if(i == j) raise_regex_exception("Bad sub-expression"); return re_detail::do_toi(i, j, *first); }
int do_toi(BidiIterator i, BidiIterator j, char c, int radix) { std::string s(i, j); char* p; int result = std::strtol(s.c_str(), &p, radix); if(*p)raise_regex_exception("Bad sub-expression"); return result; }
void raise_error(const traits& t, unsigned code) { (void)t; // warning suppression raise_regex_exception(t.error_string(code)); }