boost::urls::grammar::variant_rule

Match one of a set of rules

Synopsis

Declared in header <boost/url/grammar/variant_rule.hpp>

template<
    class R0,
    class... Rn>
constexpr
implementation-defined
variant_rule(
    const R0& r0,
    const Rn&... rn) noexcept;

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...