https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96704
Bug ID: 96704
Summary: begin() and end() iterators of views::values_view have
different type
Product: gcc
Version: 10.2.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: gleb at scylladb dot com
Target Milestone: ---
The following program fail on the second assert.
#include <ranges>
#include <unordered_map>
int main() {
std::unordered_map<int, int> x;
auto r = std::views::values(x);
static_assert(std::is_same_v<decltype(x.begin()), decltype(x.end())>);
static_assert(std::is_same_v<decltype(r.begin()), decltype(r.end())>);
}
It means functions like:
template<typename I> foo(I it1, I it2);
cannot be called with:
foo(r.begin(), r.end());