Skip to content

Commit 4547951

Browse files
committed
Make fallback rangeContains() impl actually work
1 parent 9aab11f commit 4547951

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

Quotient/ranges_extras.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,12 @@ template <template <typename> class TargetT, typename SourceT>
5454
#ifdef __cpp_lib_ranges_contains
5555
constexpr auto rangeContains = std::ranges::contains;
5656
#else
57-
[[nodiscard]] constexpr auto rangeContains(const auto& c, const auto& v, auto proj)
57+
template <typename RangeT, typename ValT, typename ProjT = std::identity>
58+
requires std::indirect_binary_predicate<
59+
std::ranges::equal_to, std::projected<std::ranges::iterator_t<RangeT>, ProjT>, const ValT*>
60+
[[nodiscard]] constexpr auto rangeContains(const RangeT& r, const ValT& v, ProjT proj = {})
5861
{
59-
return std::ranges::find(c, v, std::move(proj)) != std::ranges::end(c);
62+
return std::ranges::find(r, v, std::move(proj)) != std::ranges::end(r);
6063
}
6164
#endif
6265

0 commit comments

Comments
 (0)