| 45 | /// the input has been consumed. |
| 46 | template <typename InputIterator> |
| 47 | std::tuple<result_type, InputIterator> parse(request& req, |
| 48 | InputIterator begin, |
| 49 | InputIterator end) { |
| 50 | while (begin != end) { |
| 51 | result_type result = consume(req, *begin++); |
| 52 | if (result == good || result == bad) |
| 53 | return std::make_tuple(result, begin); |
| 54 | } |
| 55 | return std::make_tuple(indeterminate, begin); |
| 56 | } |
| 57 | |
| 58 | private: |
| 59 | /// Handle the next character of input. |