【发布时间】:2021-06-22 21:03:31
【问题描述】:
有没有办法让它在 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: error: no match for 'operator=' (操作数类型是 'std::ranges::views::__adaptor::_RangeAdaptorClosurestd::ranges::views::
' 和 'std::ranges::views::__adaptor::_RangeAdaptorClosurestd::ranges::views::__adaptor::operator|<:ranges::views::>:: >') 13 | }); | ^ 在 test.cpp:2 包含的文件中: /usr/include/c++/10/ranges:1155:14: 注意:候选:'constexpr std::ranges::views::__adaptor::_RangeAdaptorClosurestd::ranges::views:: & std ::ranges::views::__adaptor::_RangeAdaptorClosurestd::ranges::views:: ::operator=(const std::ranges::views::__adaptor::_RangeAdaptorClosurestd::ranges::意见:: &)' 第1155章结构 _RangeAdaptorClosure :公共 _RangeAdaptor<_callable> | ^~~~~~~~~~~~~~~~~~~~ /usr/include/c++/10/ranges:1155:14:注意:从 'std::ranges::views::__adaptor::_RangeAdaptorClosurestd::ranges::views::__adaptor::operator 中的参数 1 没有已知转换|<:ranges::views::>:: >' 到 'const std::ranges::views::__adaptor::_RangeAdaptorClosurestd::ranges::views: : &' /usr/include/c++/10/ranges:1155:14: 注意:候选:'constexpr std::ranges::views::__adaptor::_RangeAdaptorClosurestd::ranges::views:: & std ::ranges::views::__adaptor::_RangeAdaptorClosurestd::ranges::views:: ::operator=(std::ranges::views::__adaptor::_RangeAdaptorClosurestd::ranges::views :: &&)' /usr/include/c++/10/ranges:1155:14:注意:从 'std::ranges::views::__adaptor::_RangeAdaptorClosurestd::ranges::views::__adaptor::operator 中的参数 1 没有已知转换|<:ranges::views::>:: >' 到 'std::ranges::views::__adaptor::_RangeAdaptorClosurestd::ranges::views:: &&' make: *** [Makefile:3: build] 错误 1
我尝试用谷歌搜索一些 RangeAdaptorClosure 的东西,但没有多大意义
【问题讨论】:
标签: c++ range c++20 composition std-ranges