有没有办法让它与 C++20 一起工作?
auto view = std::views::all;
if (condition1) {
view = view | std::views::filter([](int i) {
return i%5 == 0;
});
}
if (condition2) {
view = view | std::views::filter([](int i) {
return i%10 == 0;
});
}
/* Do something with the view */
for (int i : list | view) {
...
}
我收到了这个丑陋的错误:
test.cpp:13:10:错误:'operator=' 不匹配(操作数类型为 'std::ranges::views::__adaptor::_RangeAdaptorClosurestd::ranges::views::<lambda(_Range&&) >'和 'std::ranges::views::__adaptor::_RangeAdaptorClosurestd::ranges::views::__adaptor::operator|<std::ranges::views::<lambda(_Range&&) >::<lambda(_Up&& )> >') 13 | }); | ^ 在 test.cpp:2 中包含的文件中:/usr/include/c++/10/ranges:1155:14:注意:候选人:'constexpr std::ranges::views::__adaptor::_RangeAdaptorClosurestd::ranges:: views::<lambda(_Range&&) >& std::ranges::views::__adaptor::_RangeAdaptorClosurestd::ranges::views::<lambda(_Range&&) >::operator=(const std::ranges::views ::__adaptor::_RangeAdaptorClosurestd::ranges::views::<lambda(_Range&&) >& )' 1155 | 结构 _RangeAdaptorClosure : 公共 _RangeAdaptor<_Callable> | ^~~~~~~~~~~~~~~~~~~~ /usr/include/c++/10/ranges:1155:14: 注意:从'std::ranges: 参数1 没有已知的转换: :views::__adaptor::_RangeAdaptorClosurestd::ranges::views::__adaptor::operator|<std::ranges::views::<lambda(_Range&&) >::<lambda(_Up&&)> >' to 'const std::ranges::views::__adaptor::_RangeAdaptorClosurestd::ranges::views::<lambda(_Range&&) >&' /usr/include/c++/10/ranges:1155:14: 注意:候选:'constexpr std::ranges::views::__adaptor::_RangeAdaptorClosurestd::ranges::views::<lambda(_Range&&) >& std::ranges::views::__adaptor::_RangeAdaptorClosurestd::ranges::views::< lambda(_Range&&) >::operator=(std::ranges::views::__adaptor::_RangeAdaptorClosurestd::
我试着用谷歌搜索一些 RangeAdaptorClosure 的东西,但这没有多大意义