summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2018-02-20 21:55:06 +1100
committerMaxime Coste <mawww@kakoune.org>2018-02-20 21:55:06 +1100
commit6239357e99af08ded2c532405ee2f6eba6ef8ad9 (patch)
tree18eecd25d14c91468e6d6f9dfad31633a6980138 /src
parent9b5b9743973d581a7ec5951932a09f068b837359 (diff)
ranges: Support temporary parameters passed to concatenated
Diffstat (limited to 'src')
-rw-r--r--src/ranges.hh8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/ranges.hh b/src/ranges.hh
index df622ea5..a67502df 100644
--- a/src/ranges.hh
+++ b/src/ranges.hh
@@ -263,7 +263,7 @@ struct ConcatView
: m_it1(std::move(it1)), m_end1(std::move(end1)),
m_it2(std::move(it2)) {}
- ValueType operator*() { return is2() ? *m_it2 : *m_it1; }
+ decltype(auto) operator*() { return is2() ? *m_it2 : *m_it1; }
Iterator& operator++() { if (is2()) ++m_it2; else ++m_it1; return *this; }
Iterator operator++(int) { auto copy = *this; ++*this; return copy; }
@@ -293,12 +293,12 @@ struct ConcatView
Iterator end() const { return {m_range1.end(), m_range1.end(), m_range2.end()}; }
private:
- Range1& m_range1;
- Range2& m_range2;
+ Range1 m_range1;
+ Range2 m_range2;
};
template<typename Range1, typename Range2>
-ConcatView<Range1, Range2> concatenated(Range1&& range1, Range2&& range2)
+ConcatView<decay_range<Range1>, decay_range<Range2>> concatenated(Range1&& range1, Range2&& range2)
{
return {range1, range2};
}