据说将 Ranges TS 注入(inject)到 std
命名空间中会导致对标准库的一些破坏性更改(例如 this link )。有人知道这些变化是什么吗?
最佳答案
来自 N4569 Annex B(由@Holt 在上面的评论中链接):
算法返回类型 -- 修改为包括结束迭代器
更强的约束——过去只需要
<
的算法现在需要所有比较运算符受约束的功能对象 -- 添加到
std::less
的类型等的约束。迭代器和默认可构造性 -- Ranges_v3 假设迭代器可以默认构造(以一种有用的方式)。目前不需要。
iterator_traits
不能特化 -- 在 Range_v3 中,它是一个别名模板。N3351 -- 它在许多方面也与 N3351 提案不兼容,我不会在这里讨论。
这只是一个总结。点击该论文的链接或找到它以获取更多详细信息。
关于c++ - 范围 TS 重大变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40891347/