mirror of
https://github.com/boostorg/range.git
synced 2025-07-12 12:16:38 +02:00
[boost][range] - Improved handling of temporary ranges in range algorithms.
[SVN r63903]
This commit is contained in:
@ -51,6 +51,46 @@ namespace boost
|
||||
reference_target.begin(), reference_target.end(),
|
||||
test_target.begin(), test_target.end()
|
||||
);
|
||||
|
||||
test_it = boost::merge(boost::make_iterator_range(cont1),
|
||||
cont2, test_target.begin());
|
||||
|
||||
BOOST_CHECK_EQUAL(
|
||||
std::distance<iterator_t>(reference_target.begin(), reference_it),
|
||||
std::distance<iterator_t>(test_target.begin(), test_it)
|
||||
);
|
||||
|
||||
BOOST_CHECK_EQUAL_COLLECTIONS(
|
||||
reference_target.begin(), reference_target.end(),
|
||||
test_target.begin(), test_target.end()
|
||||
);
|
||||
|
||||
test_it = boost::merge(cont1, boost::make_iterator_range(cont2),
|
||||
test_target.begin());
|
||||
|
||||
BOOST_CHECK_EQUAL(
|
||||
std::distance<iterator_t>(reference_target.begin(), reference_it),
|
||||
std::distance<iterator_t>(test_target.begin(), test_it)
|
||||
);
|
||||
|
||||
BOOST_CHECK_EQUAL_COLLECTIONS(
|
||||
reference_target.begin(), reference_target.end(),
|
||||
test_target.begin(), test_target.end()
|
||||
);
|
||||
|
||||
test_it = boost::merge(boost::make_iterator_range(cont1),
|
||||
boost::make_iterator_range(cont2),
|
||||
test_target.begin());
|
||||
|
||||
BOOST_CHECK_EQUAL(
|
||||
std::distance<iterator_t>(reference_target.begin(), reference_it),
|
||||
std::distance<iterator_t>(test_target.begin(), test_it)
|
||||
);
|
||||
|
||||
BOOST_CHECK_EQUAL_COLLECTIONS(
|
||||
reference_target.begin(), reference_target.end(),
|
||||
test_target.begin(), test_target.end()
|
||||
);
|
||||
}
|
||||
|
||||
template<class Container, class BinaryPredicate>
|
||||
@ -95,6 +135,46 @@ namespace boost
|
||||
reference_target.begin(), reference_target.end(),
|
||||
test_target.begin(), test_target.end()
|
||||
);
|
||||
|
||||
test_it = boost::merge(boost::make_iterator_range(cont1), cont2,
|
||||
test_target.begin(), pred);
|
||||
|
||||
BOOST_CHECK_EQUAL(
|
||||
std::distance(reference_target.begin(), reference_it),
|
||||
std::distance(test_target.begin(), test_it)
|
||||
);
|
||||
|
||||
BOOST_CHECK_EQUAL_COLLECTIONS(
|
||||
reference_target.begin(), reference_target.end(),
|
||||
test_target.begin(), test_target.end()
|
||||
);
|
||||
|
||||
test_it = boost::merge(cont1, boost::make_iterator_range(cont2),
|
||||
test_target.begin(), pred);
|
||||
|
||||
BOOST_CHECK_EQUAL(
|
||||
std::distance(reference_target.begin(), reference_it),
|
||||
std::distance(test_target.begin(), test_it)
|
||||
);
|
||||
|
||||
BOOST_CHECK_EQUAL_COLLECTIONS(
|
||||
reference_target.begin(), reference_target.end(),
|
||||
test_target.begin(), test_target.end()
|
||||
);
|
||||
|
||||
test_it = boost::merge(boost::make_iterator_range(cont1),
|
||||
boost::make_iterator_range(cont2),
|
||||
test_target.begin(), pred);
|
||||
|
||||
BOOST_CHECK_EQUAL(
|
||||
std::distance(reference_target.begin(), reference_it),
|
||||
std::distance(test_target.begin(), test_it)
|
||||
);
|
||||
|
||||
BOOST_CHECK_EQUAL_COLLECTIONS(
|
||||
reference_target.begin(), reference_target.end(),
|
||||
test_target.begin(), test_target.end()
|
||||
);
|
||||
}
|
||||
|
||||
template<class Container1, class Container2>
|
||||
|
Reference in New Issue
Block a user