In the following code,
std::vector<int> vectors[] = {{1, 2, 3}, {4, 5}};
auto view = vectors | std::views::transform([](auto v) { return v; })
| std::views::join;
why the result of the first pipe is not a range adaptor closure and cannot be passed to a subsequent pipe?
The error snippet:
error: no match for 'operator|' (operand types are 'std::ranges::transform_view<std::ranges::ref_view<const std::vector<int> [2]>, run()::<lambda(auto:27)> >' and 'const std::ranges::views::_Join')
147 | auto view = vectors | std::views::transform([](auto v) { return v; }) | std::views::join;
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~
| | |
| | const std::ranges::views::_Join
| std::ranges::transform_view<std::ranges::ref_view<const std::vector<int> [2]>, run()::<lambda(auto:27)> >
...
note: 'std::ranges::views::__adaptor::_RangeAdaptorClosure' is not a base of 'std::ranges::transform_view<std::ranges::ref_view<const std::vector<int> [2]>, run()::<lambda(auto:27)> >'
67 | concept derived_from = __is_base_of(_Base, _Derived)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...