В предлагаемом C ++ 20 (One) диапазоны TS, какой предложенный метод преобразования представления в std :: vector? < /p>
Следующий код не компилируется: < /p>
int
main() {
std::vector values = {1.0, 2.0, 3.0, 4.0, 5.2, 6.0, 7.0, 8.0, 9.0};
//fmt::print("{}\n", std::experimental::ranges::views::filter(values, [] (float v) { return v < 5.f; }));
std::vector foo = vw::filter(values, [] (float v) { return v < 5.f; });
fmt::print("{}\n", foo);
}
< /code>
с ошибкой < /p>
../src/view.cpp:19:40: error: conversion from ‘std::experimental::ranges::v1::filter_view’ to non-scalar type ‘std::vector’ requested
std::vector foo = vw::filter(values, [] (float v) { return v < 5.f; });
< /code>
(закомментированная строка также не будет компилироваться из-за некоторых CV-ограничений). < /p>
Итак, как мне что-то сделать с точкой зрения, за исключением использования на основе диапазона для цикла? Реализация CMCSTL2, которую я использовал, даже следуя предложению? Похоже, что Ranges-V3 не является. Предложение PDF, которое я нашел, является в значительной степени ужасно отформатированной кодовой дамп в стиле DIFF. Фактически, непосредственно читать источники CMCSTL2 было легче прочитать для меня. Cppreference, кажется, тоже не хватает ...
Подробнее здесь: https://stackoverflow.com/questions/588 ... -stdvector