| 3624 | typename Context, |
| 3625 | typename SkipParser> |
| 3626 | auto call( |
| 3627 | Iter & first_, |
| 3628 | Sentinel last, |
| 3629 | Context const & context, |
| 3630 | SkipParser const & skip, |
| 3631 | detail::flags flags, |
| 3632 | bool & success) const |
| 3633 | { |
| 3634 | Iter first = first_; |
| 3635 | |
| 3636 | use_parser_t<Iter, Sentinel, Context, SkipParser> const use_parser{ |
| 3637 | first, last, context, skip, flags, success}; |
| 3638 | using result_t = |
| 3639 | decltype(detail::hl::transform(parsers_, use_parser)); |
| 3640 | result_t retval{}; |
| 3641 | |
| 3642 | #if BOOST_PARSER_DO_TRACE |
| 3643 | [[maybe_unused]] auto _ = detail::scoped_trace( |
| 3644 | *this, first_, last, context, flags, retval); |
| 3645 | #endif |
| 3646 | |
| 3647 | call_impl( |
| 3648 | first, |
| 3649 | last, |
| 3650 | context, |
| 3651 | skip, |
| 3652 | flags, |
| 3653 | success, |
| 3654 | retval, |
| 3655 | std::make_integer_sequence< |
| 3656 | int, |
| 3657 | detail::tuple_size_<ParserTuple>>{}); |
| 3658 | |
| 3659 | if (success) |
| 3660 | first_ = first; |
| 3661 | |
| 3662 | return retval; |
| 3663 | } |
| 3664 | |
| 3665 | template< |
| 3666 | typename Iter, |
nothing calls this directly
no test coverage detected