:relfileprefix: ../../../
[#boost-urls-grammar-tuple_rule]

== xref:boost.adoc[pass:[boost]]::xref:boost/urls.adoc[pass:[urls]]::xref:boost/urls/grammar.adoc[pass:[grammar]]::tuple_rule


Match a series of rules in order


=== Synopsis

Declared in header `<https://www.github.com/boostorg/url/blob/develop/include/boost/url/grammar/tuple_rule.hpp#L184[boost/url/grammar/tuple_rule.hpp,window=blank_]>`

[source,cpp,subs="verbatim,macros,-callouts"]
----
template<
    class R0,
    class... Rn>
constexpr
pass:q[_implementation-defined_]
tuple_rule(
    R0 const& r0,
    Rn const&... rn) noexcept;
----

=== Description


This matches a series of rules in the
order specified. Upon success the input
is adjusted to point to the first
unconsumed character. There is no
implicit specification of linear white
space between each rule.
[,cpp]
----
using value_type = __see_below__;
----

The sequence rule usually returns a
`std::tuple` containing the the `value_type`
of each corresponding rule in the sequence,
except that `void` values are removed.
However, if there is exactly one non-void
value type `T`, then the sequence rule
returns `system::result&lt;T&gt;` instead of
`system::result&lt;tuple&lt;...&gt;&gt;`.

=== Rules are used with the function

xref:boost/urls/grammar/parse-02.adoc[parse]
.
[,cpp]
----
system::result< std::tuple< unsigned char, unsigned char, unsigned char, unsigned char > > rv =
    parse( "192.168.0.1",
        tuple_rule(
            dec_octet_rule,
            squelch( delim_rule('.') ),
            dec_octet_rule,
            squelch( delim_rule('.') ),
            dec_octet_rule,
            squelch( delim_rule('.') ),
            dec_octet_rule ) );
----
[,cpp]
----
sequence     = rule1 rule2 rule3...
----

* link:https://datatracker.ietf.org/doc/html/rfc5234#section-3.1[3.1.  Concatenation (rfc5234)]





=== Parameters

|===
| Name | Description 

| *rn*
| 
A list of one or more rules to match

|===




=== See Also


xref:boost/urls/grammar/dec_octet_rule.adoc[dec_octet_rule]
,
xref:boost/urls/grammar/delim_rule-0a.adoc[delim_rule]
,
xref:boost/urls/grammar/parse-02.adoc[parse]
,
xref:boost/urls/grammar/squelch.adoc[squelch]
.



