Range Algorithms do not compile with `std::span`
还没有人认领这个 Issue。
评估
调研方向
从 issue 中链接的最小示例开始,复现使用 std::span 时 boost::range::find 的失败。跟踪该入口点涉及的 range iterator 处理;完成的标准是,所示的 std::span 调用能够编译,同时现有的 boost::span 和 std::ranges 用例仍然正常工作。
由索引模型根据 Issue 内容生成。
描述
Algorithms like find_if do not compile when used on instances of std::span. They work with boost::span.
You can try this code on https://godbolt.org/z/Mq4GhqMYn:
#include <ranges>
#include <span>
#include <boost/core/span.hpp>
#include <boost/range/algorithm/find.hpp>
constexpr int a[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 };
boost::span boost_span{a};
std::span std_span{a};
auto foo0() {
return boost::range::find(boost_span, 2); // ok
}
auto foo1() {
return boost::range::find(std_span, 2); // fails
}
auto foo2() {
return std::ranges::find(boost_span, 2); // ok
}
auto foo3() {
return std::ranges::find(std_span, 2); // ok
}
The error message is something like
error: no type named 'type' in 'struct boost::range_iterator<const std::span<const int, 9>, void>'
- 主要语言
- C++
- 星标
- 45
- 派生
- 104
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
我们还没有检查这个项目的环境配置文件。先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
boostorg/range 的其他 Issue
-
难度 1/5 1 小时以内 新手友好度 65/100
-
难度 1/5 1 小时以内 新手友好度 70/100
-
难度 2/5 1-3 小时 新手友好度 35/100
-
难度 3/5 1-2 天 新手友好度 45/100
-
难度 3/5 1-2 天 新手友好度 38/100
相似的 Issue
-
area/actorsystem bug tsan
难度 2/5 1-3 小时 新手友好度 74/100
ydb-platform/ydb#54282 ·
维护者通常 1 天内回复
-
bug needs triage
难度 1/5 1 小时以内 新手友好度 90/100
project-chip/connectedhomeip#74434 ·
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 88/100
tenstorrent/tt-metal#58057 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 84/100
maplibre/maplibre-native#4690 ·
维护者通常 1 天内回复
-
comp-query-execution
难度 2/5 1-3 小时 新手友好度 84/100
ClickHouse/ClickHouse#122569 ·
维护者通常 1 天内回复