[#iterate] [section iterate] [h1 Synopsis] template struct iterate; This is a [link parser_combinator parser combinator]. [table Arguments [[Name] [Type]] [[`P`] [[link parser parser]]] [[`N`] [[link boxed_value boxed] non-negative integer value]] ] [h1 Description] It applies `P` on the input string `N` times. The result of parsing is a sequence of the results of the individual applications of `P`. `P` has to accept the input `N` times for `iterate` to accept it. [h1 Header] #include [h1 Expression semantics] For any `p` parser, `n` wrapped integer the following are equivalent: iterate iterate_c [h1 Example] #include #include #include #include #include #include #include #include #include #include using namespace boost::metaparse; static_assert( boost::mpl::equal< boost::mpl::vector< boost::mpl::char_<'1'>, boost::mpl::char_<'2'>, boost::mpl::char_<'3'> >, get_result< iterate>::apply< BOOST_METAPARSE_STRING("123"), start > >::type >::type::value, "the result should be the sequence of the individual applications of digit" ); static_assert( boost::mpl::equal< boost::mpl::vector< boost::mpl::char_<'1'>, boost::mpl::char_<'2'>, boost::mpl::char_<'3'> >, get_result< iterate>::apply< BOOST_METAPARSE_STRING("1234"), start > >::type >::type::value, "only three iterations should be made" ); static_assert( is_error< iterate>::apply< BOOST_METAPARSE_STRING("12"), start > >::type::value, "it should fail when digit can not be applied three times" ); [endsect]