c++ - 范围 TS 重大变化?

标签 c++ range c++-standard-library stl-algorithm range-v3

据说将 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/

相关文章:

c++ - 音频操作和删除音频的某些部分

swift - 如何在 swift 中包含例如 'if numbers are between 1 to 5' 的范围

c++ - 使用 <math.h> 的二次公式中 sqrt() 的意外结果

iphone - 是否可以使用 C/C++ 在 Windows 上开发(而非分发)iPhone 应用程序?

c++ - 委托(delegate)断言

javascript - 设置范围 : the startContainer is wrong

javascript - Rangey如何在没有符号的情况下扩展?

c++ - 如果将某个符号的名称用作 STL 容器的元素,为什么我不能隐藏它?

c++ - 在 std::variant 中按类型获取索引

C++20 协程、std 返回类型和状态持久性