Add support for iterator+sentinel pairs in Contains matcher

This commit is contained in:
Martin Hořeňovský
2023-02-10 23:25:41 +01:00
parent 4aa88299af
commit e8ba329b6c
2 changed files with 16 additions and 8 deletions

View File

@@ -33,13 +33,11 @@ namespace Catch {
}
template <typename RangeLike>
bool match(RangeLike&& rng) const {
using std::begin; using std::end;
return end(rng) != std::find_if(begin(rng), end(rng),
[&](auto const& elem) {
return m_eq(elem, m_desired);
});
bool match( RangeLike&& rng ) const {
for ( auto&& elem : rng ) {
if ( m_eq( elem, m_desired ) ) { return true; }
}
return false;
}
};
@@ -91,7 +89,7 @@ namespace Catch {
/**
* Creates a matcher that checks whether a range contains a specific element.
*
* Uses `eq` to do the comparisons
* Uses `eq` to do the comparisons, the element is provided on the rhs
*/
template <typename T, typename Equality>
ContainsElementMatcher<T, Equality> Contains(T&& elem, Equality&& eq) {