Следующий код не компилируется:
Код: Выделить всё
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);
}
Код: Выделить всё
../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; });
Итак, как мне сделать что-нибудь с представлением, кроме использования цикла for на основе диапазона?
Также несколько дополнительных вопросов:
- Является ли реализация cmcstl2, которую я использовал, даже следующей предложению? Ranges-v3 вроде нет.
- Есть ли какая-нибудь документация по Ranges TS? PDF-файл с предложением, который я нашел, представляет собой ужасно отформатированный дамп кода в стиле diff. На самом деле мне было гораздо проще читать исходные тексты cmcstl2 напрямую. Похоже, что cppreference тоже не хватает...
Подробнее здесь: https://stackoverflow.com/questions/588 ... -stdvector
Мобильная версия