PSA: views::single
doesn’t really view
views::single
doesn’t really viewSomeone on the cpplang Slack asks:
How can I view a std::pair<T, T>
as if it were a range of two T
s?
That is, fill in the blank in this sample program:
template<std::ranges::range R>
void increment_all(R&& rg) {
for (auto&& elt : rg) {
elt = elt + 1;
}
}
template<class T>
auto F(std::pair<T, T>& kv) { ~~~~ }
int main() {
std::pair<int, int> kv = {1, 2};
increment_all(F(kv));
assert(kv.first == 2 && kv.second == 3);
std::ranges::fill(F(kv), 4);
assert(kv.first == 4 && kv.second == 4);
}