Сохранение std::forward_range во время преобразования фрагмента? ⇐ C++

Программы на C++. Форум разработчиков
Anonymous
Сохранение std::forward_range во время преобразования фрагмента?

Сообщение Anonymous »

ниже представлена ​​упрощенная версия преобразования, над которым я работаю (запустите его на godbolt):

Код: Выделить всё

#include 
#include 
#include 

int main() {
static constexpr auto arr = std::array{1, 2, 3, 4, 5, 6, 7};
static constexpr auto encode = std::views::chunk(3) |
std::views::transform([](auto chunk) {
std::array a{};
auto i = 0;
for (const auto j : chunk) {
a.at(i++) = j;
}
a.at(3) = a.at(0);
return a;
}) |
std::views::join;
auto encoded = arr | encode;

static_assert(std::ranges::contiguous_range);
static_assert(std::ranges::input_range);
static_assert(not std::ranges::forward_range);

for (const auto i : encoded) {
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79079308/preserving-stdforward-range-during-chunk-transformation[/url]

Вернуться в «C++»