An rvalue boost::span doesn't work for algorithms that expect mutable ranges
还没有人认领这个 Issue。
评估
调研方向
先编译提供的示例,然后检查 boost/core/span.hpp 和 boost/range/algorithm/fill.hpp。跟踪用于 rvalue span 的 boost::begin 和 boost::end 重载,并将它们与 lvalue 路径进行比较。当 mutable 算法能够接受 rvalue spans,同时容器行为保持不变,并且覆盖这两种情况时,即表示完成。
由索引模型根据 Issue 内容生成。
描述
An rvalue span does not work for algorithms that modify elements. In the following example, using an lvalue span works, but using an rvalue span fails to compile.
#include <vector>
#include <boost/core/span.hpp>
#include <boost/range/algorithm/fill.hpp>
template <typename T>
boost::span<T> to_span( std::vector<T>& v ) {
return v;
}
int main() {
std::vector<unsigned char> vec{ 1, 2, 3, 4, 5 };
boost::span<unsigned char> sp{ vec };
boost::fill( sp, 0 ); // works
boost::fill( to_span(vec), 0); // fails
return 0;
}
It looks to me that the issue is that boost::begin and boost::end have overloads for lvalue ranges and const lvalue ranges but not rvalue ranges, so if you pass an rvalue range to an algorithm, it gets treated as a const lvalue range and has const iterators. That seems to be the right thing to do for containers, but not so much for proxy types like span.
- 主要语言
- C++
- 星标
- 45
- 派生
- 104
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
boostorg/range 的其他 Issue
-
难度 1/5 1 小时以内 新手友好度 65/100
-
难度 1/5 1 小时以内 新手友好度 70/100
-
难度 3/5 1-2 天 新手友好度 45/100
-
难度 1/5 1 小时以内 新手友好度 55/100
-
难度 3/5 1-2 天 新手友好度 45/100
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 66/100
维护者通常 1 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 85/100
telegramdesktop/tdesktop#31505 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
ll-builder shell completions omit existing lockfile commands and --locked可能已有人在做 @project-nju-learner 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 90/100
OpenAtom-Linyaps/linyaps#2291 ·
维护者通常 1 天内回复
-
area: ui bug P3: low value: low
难度 1/5 1-3 小时 新手友好度 85/100
patrick-hudson/put.gd-desktop#494 ·
维护者通常 1 天内回复