ev-mold-auto-upper-bound-001¶
| 字段 | 值 |
|---|---|
| 项目 | rui314/mold |
| 固定 commit | 27162691b71a |
| 路径 | src/mold.h |
| 行段 | L2624-L2630 |
| 特性 | auto 与 decltype |
| 许可证 | MIT |
| 代码来源 | 项目源码 |
| 级别 | manual |
| 审核 | zyuhao7 @ 2026-10-27 |
| 测试代码 | 否 |
| 发现方式 | manual |
用法¶
用 auto 承接 upper_bound 返回的迭代器类型
为什么典型¶
迭代器类型由容器和模板参数共同决定,写出来冗长且易错,auto 让调用点只关心结果。
摘录¶
template <typename E>
std::pair<SectionFragment<E> *, i64>
MergeableSection<E>::get_fragment(i64 offset) {
std::span<u32> vec = frag_offsets;
auto it = std::upper_bound(vec.begin(), vec.end(), offset);
i64 idx = it - 1 - vec.begin();
return {fragments[idx], offset - vec[idx]};
备注¶
生产路径;分片查找依赖迭代器减法,类型无需显式拼写。