fix swap_ranges api to correctly handle differently sized ranges

master
Daniel Kolesa 2015-05-27 00:49:35 +01:00
parent e9367246b5
commit 28828ff448
1 changed files with 4 additions and 3 deletions

View File

@ -366,12 +366,13 @@ namespace octa {
} }
template<typename R1, typename R2> template<typename R1, typename R2>
R2 swap_ranges(R1 range1, R2 range2) { Pair<R1, R2> swap_ranges(R1 range1, R2 range2) {
for (; !range1.empty(); range1.pop_first()) { while (!range1.empty() && !range2.empty()) {
swap(range1.first(), range2.first()); swap(range1.first(), range2.first());
range1.pop_first();
range2.pop_first(); range2.pop_first();
} }
return range2; return Pair<R1, R2>(range1, range2);
} }
template<typename R, typename T> template<typename R, typename T>