I recently discovered the ranges stdandard library and encountered a strange behavior. When chaining multiple range adaptors, I can't chain after using
I recently discovered the ranges stdandard library and encountered a strange behavior. When chaining multiple range adaptors, I can't chain after using [code]std::ranges::views::join[/code]: [code]vec | std::ranges::views::slide(2) | std::ranges::views::join[/code] works as intended, but [code]vec | std::ranges::views::slide(2) | std::ranges::views::join | std::ranges::views::slide(2)[/code] will result in compilation error: [code]error: no match for 'operator|' (operand types are 'std::ranges::join_view' and 'std::ranges::views::__adaptor::_Partial') 265 | vec | std::ranges::views::slide(2) | std::ranges::views::join | std::ranges::views::slide(2); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | std::ranges::views::__adaptor::_Partial | std::ranges::join_view [/code] Why is that? and what do I have to do to make multiple joins work? Thanks in advance!
Читая через cppreference.com, я заметил ranges :: find_last_if возвращает субстанцию , но диапазоны :: find_if возвращает только итератор. Мне интересно, есть ли веская причина для этого решения? const auto it = std::ranges::find_if(data |...