| Home | Libraries | People | FAQ | More

#### grammar::variant_rule

Match one of a set of rules.

##### Synopsis

Defined in header `<boost/url/grammar/variant_rule.hpp>`

    template<
        class... Rules>
    constexpr implementation-defined
    variant_rule(
        Rules... rn);

##### Description

Each specified rule is tried in sequence. When the first match occurs, the result is stored and returned in the variant. If no match occurs, an error is returned.

##### Value Type

    using value_type = variant< typename Rules::value_type... >;

##### Example

Rules are used with the function `parse`.

    // request-target = origin-form
    //                / absolute-form
    //                / authority-form
    //                / asterisk-form

    system::result< variant< url_view, url_view, authority_view, core::string_view > > rv = grammar::parse(
        "/index.html?width=full" ,
        variant_rule(
            origin_form_rule,
            absolute_uri_rule,
            authority_rule,
            delim_rule( '*' ) ) );

##### BNF

    variant     = rule1 / rule2 / rule3...

##### Specification

- 3.2. Alternatives (rfc5234)
- 5.3. Request Target (rfc7230)

##### See Also

`absolute_uri_rule`, `authority_rule`, `delim_rule`, `parse`, `origin_form_rule`, `url_view`.

Convenience header `<boost/url/grammar.hpp>`