123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- #ifndef BOOST_URL_GRAMMAR_VARIANT_RULE_HPP
- #define BOOST_URL_GRAMMAR_VARIANT_RULE_HPP
- #include <boost/url/detail/config.hpp>
- #include <boost/url/error_types.hpp>
- #include <boost/url/variant.hpp>
- #include <boost/url/grammar/detail/tuple.hpp>
- namespace boost {
- namespace urls {
- namespace grammar {
- #ifdef BOOST_URL_DOCS
- template<class... Rules>
- constexpr
- __implementation_defined__
- variant_rule( Rules... rn ) noexcept;
- #else
- template<
- class R0, class... Rn>
- class variant_rule_t
- {
- public:
- using value_type = variant<
- typename R0::value_type,
- typename Rn::value_type...>;
- auto
- parse(
- char const*& it,
- char const* end) const ->
- system::result<value_type>;
- template<
- class R0_,
- class... Rn_>
- friend
- constexpr
- auto
- variant_rule(
- R0_ const& r0,
- Rn_ const&... rn) noexcept ->
- variant_rule_t<R0_, Rn_...>;
- private:
- constexpr
- variant_rule_t(
- R0 const& r0,
- Rn const&... rn) noexcept
- : rn_(r0, rn...)
- {
- }
- detail::tuple<R0, Rn...> rn_;
- };
- template<
- class R0,
- class... Rn>
- constexpr
- auto
- variant_rule(
- R0 const& r0,
- Rn const&... rn) noexcept ->
- variant_rule_t<R0, Rn...>;
- #endif
- }
- }
- }
- #include <boost/url/grammar/impl/variant_rule.hpp>
- #endif
|