范围 TS 重大变化?
Ranges TS breaking changes?
据说将 Ranges TS 注入 std
命名空间会导致对标准库(例如 this link)的一些破坏性更改。有人知道这些变化是什么吗?
来自N4569 Annex B(由@Holt 在上面的评论中编辑link):
算法 Return 类型 -- 修改为包括结束迭代器
更强的约束——过去只需要 <
的算法现在需要所有比较运算符
Constrained Functional Objects -- 添加到std::less
类型等的约束。
迭代器和默认可构造性 -- Ranges_v3 假设迭代器可以默认构造(以一种有用的方式)。目前不需要。
iterator_traits
无法特化 -- 在 Range_v3 中,它是一个别名模板。
N3351 -- 它在很多方面也与 N3351 提案不兼容,我不会在这里讨论。
这只是一个总结。按照 link 到论文或查找它以获取更多详细信息。
据说将 Ranges TS 注入 std
命名空间会导致对标准库(例如 this link)的一些破坏性更改。有人知道这些变化是什么吗?
来自N4569 Annex B(由@Holt 在上面的评论中编辑link):
算法 Return 类型 -- 修改为包括结束迭代器
更强的约束——过去只需要
<
的算法现在需要所有比较运算符Constrained Functional Objects -- 添加到
std::less
类型等的约束。迭代器和默认可构造性 -- Ranges_v3 假设迭代器可以默认构造(以一种有用的方式)。目前不需要。
iterator_traits
无法特化 -- 在 Range_v3 中,它是一个别名模板。N3351 -- 它在很多方面也与 N3351 提案不兼容,我不会在这里讨论。
这只是一个总结。按照 link 到论文或查找它以获取更多详细信息。