template <typename Lhs, typename Rhs,
hb_requires (hb_is_iterator (Lhs))>
static inline auto
-operator | (Lhs lhs, const Rhs &rhs) HB_AUTO_RETURN (rhs (lhs))
+operator | (Lhs&& lhs, Rhs&& rhs) HB_AUTO_RETURN (hb_forward<Rhs> (rhs) (hb_forward<Lhs> (lhs)))
/* hb_map(), hb_filter(), hb_reduce() */
template <typename Iter,
hb_requires (hb_is_iterator (Iter))>
hb_map_iter_t<Iter, Proj>
- operator () (Iter it) const
+ operator () (Iter it)
{ return hb_map_iter_t<Iter, Proj> (it, f); }
private:
template <typename Iter,
hb_requires (hb_is_iterator (Iter))>
hb_filter_iter_t<Iter, Pred, Proj>
- operator () (Iter it) const
+ operator () (Iter it)
{ return hb_filter_iter_t<Iter, Pred, Proj> (it, p, f); }
private:
hb_requires (hb_is_iterator (Iter)),
typename AccuT = decltype (hb_declval (Redu) (hb_declval (InitT), hb_declval (typename Iter::item_t)))>
AccuT
- operator () (Iter it) const
+ operator () (Iter it)
{
AccuT value = init_value;
for (; it; ++it)
template <typename Iter,
hb_requires (hb_is_iterator (Iter))>
- void operator () (Iter it) const
+ void operator () (Iter it)
{
for (; it; ++it)
(void) hb_invoke (a, *it);
template <typename Iter,
hb_requires (hb_is_iterator (Iter))>
- void operator () (Iter it) const
+ void operator () (Iter it)
{
for (; it; ++it)
s << *it;
template <typename Sink1, typename Sink2>
struct hb_unzip_t
{
- hb_unzip_t (Sink1&& s1, Sink2&& s2) : s1 (s1), s2 (s2) {}
+ hb_unzip_t (Sink1 s1, Sink2 s2) : s1 (s1), s2 (s2) {}
template <typename Iter,
hb_requires (hb_is_iterator (Iter))>
- void operator () (Iter it) const
+ void operator () (Iter it)
{
for (; it; ++it)
{