Код: Выделить всё
auto c = std::ranges::views::iota(1, 5)
| std::ranges::views::transform([](int const v){
return std::ranges::views::iota(1, 3)
| std::ranges::views::transform([v](int const w){
return std::make_pair(v, std::format("[{}/{}]", v, w));
});
})
| std::ranges::views::join
| std::ranges::to();
Теперь вместо вектора пар я хотел бы создать карту (или unordered_map ). Построение карты из ряда пар должно работать (как я узнал из своего старого вопроса). Но здесь это не компилируется:
Код: Выделить всё
auto c = std::ranges::views::iota(1, 5)
| std::ranges::views::transform([](int const v){
return std::ranges::views::iota(1, 3)
| std::ranges::views::transform([v](int const w){
return std::make_pair(v, std::format("[{}/{}]", v, w));
});
})
| std::ranges::views::join
| std::ranges::to();
Использование только одного уровня «вложенных» диапазонов работает так, как ожидалось. Таким образом, эта проблема возникает только тогда, когда вложенные уровни диапазона объединяются и преобразуются в карту.
Как заставить второй код компилироваться и работать должным образом?
Подробнее здесь: https://stackoverflow.com/questions/787 ... oin-result