24 typename C1::const_iterator first = c1.begin();
25 typename C1::const_iterator current = first;
26 typename C1::const_iterator last = c1.end();
27 std::vector<typename C1::value_type>
result;
30 if (first == last)
return result;
32 while (++first != last) {
33 if (cmp( *current, *first)) {
34 result.push_back(*current);
38 typename C1::value_type merged = merger( *current, *first);
39 while (++first != last && !cmp( *current, *first)) {
40 merged = merger( merged, *first);
43 if (first == last)
return result;
47 result.push_back( *current);