Por que não posso (re)atribuir o valor para uma visualização com o mesmo tipo de visualização?
Demonstração: https://godbolt.org/z/aqdh7ohva
#include <iostream>
#include <ranges>
#include <vector>
int main()
{
std::vector<int> v = { 0, 1, 2, 3, 4, 5, 6 };
const bool strategy_check_for_zero = true;
auto selected = v | std::views::filter([=](const auto& v) { return !strategy_check_for_zero || v != 0; });
// Impossible to do; why?
selected = v | std::views::filter([=](const auto& v) { return true; });
std::ranges::copy(selected, std::ostream_iterator<int>{std::cout, ", "});
std::cout << '\n';
}
Bem, em código real, é mais ou menos assim:
auto selected = v | std::views::filter([=](const auto& v) { return !strategy_check_for_zero || v != 0; });
if (selected.empty()) {
selected = v | std::views::filter([=](const auto& v) { return true; });
}
Quero manter o código em questão o mais simples possível.