42 is_finite<Rng>::value ? finite : range_cardinality<Rng>::value>
46 CPP_assert(semiregular<Regex>);
47 CPP_assert(semiregular<SubMatchRange>);
52 std::regex_constants::match_flag_type flags_;
55 std::regex_token_iterator<iterator_t<meta::const_if_c<Const, Rng>>>;
60 std::regex_constants::match_flag_type flags)
61 : rng_(std::move(rng))
62 , rex_(std::move(rex))
63 , subs_(std::move(subs))
66 iterator_t<simple_view<Rng>()> begin()
68 meta::const_if_c<simple_view<Rng>(), Rng> & rng = rng_;
69 return {ranges::begin(rng), ranges::end(rng), rex_, subs_, flags_};
71 template(
bool Const =
true)(
73 iterator_t<Const> begin()
const
75 return {ranges::begin(rng_), ranges::end(rng_), rex_, subs_, flags_};
77 iterator_t<simple_view<Rng>()> end()
81 template(
bool Const =
true)(
83 iterator_t<Const> end()
const
104 template(
typename Rng,
typename Regex)(
108 typename detail::decay_t<Regex>::value_type>)
110 operator()(Rng && rng,
113 std::regex_constants::match_flag_type flags =
114 std::regex_constants::match_default)
const
116 return {all(
static_cast<Rng &&
>(rng)),
117 static_cast<Regex &&
>(rex),
122 template(
typename Rng,
typename Regex)(
124 same_as<range_value_t<Rng>,
125 typename detail::decay_t<Regex>::value_type>)
127 operator()(Rng && rng,
129 std::vector<int> subs,
130 std::regex_constants::match_flag_type flags =
131 std::regex_constants::match_default)
const
133 return {all(
static_cast<Rng &&
>(rng)),
134 static_cast<Regex &&
>(rex),
139 template(
typename Rng,
typename Regex)(
141 same_as<range_value_t<Rng>,
142 typename detail::decay_t<Regex>::value_type>)
144 detail::decay_t<Regex>,
145 std::initializer_list<int>>
146 operator()(Rng && rng,
148 std::initializer_list<int> subs,
149 std::regex_constants::match_flag_type flags =
150 std::regex_constants::match_default)
const
152 return {all(
static_cast<Rng &&
>(rng)),
153 static_cast<Regex &&
>(rex),
161 using tokenize_base_fn::operator();
163 template<
typename Regex>
164 constexpr auto operator()(Regex && rex,
166 std::regex_constants::match_flag_type flags =
167 std::regex_constants::match_default)
const
169 return make_view_closure(bind_back(
173 template<
typename Regex>
174 auto operator()(Regex && rex,
175 std::vector<int> subs,
176 std::regex_constants::match_flag_type flags =
177 std::regex_constants::match_default)
const
180 static_cast<Regex &&
>(rex),
185 template<
typename Regex>
186 constexpr auto operator()(Regex && rex,
187 std::initializer_list<int> subs,
188 std::regex_constants::match_flag_type flags =
189 std::regex_constants::match_default)
const
191 return make_view_closure(bind_back(