【问题标题】:When will ranges be included in the c++ standard? [closed]范围何时会包含在 c++ 标准中? [关闭]
【发布时间】:2013-06-18 15:30:49
【问题描述】:

我可以找到两个在 C++ 中包含范围的建议: N1871 相当老了(2005 年),N3513

但是,我在当前 C++14 草案 (N3690) 中找不到任何有关范围的信息。这是否意味着它不会成为 C++14 的一部分?如果是这样,为什么引入范围这么麻烦?

【问题讨论】:

  • 只是猜测,但可能是因为我们已经有了迭代器对,所以它被认为是低优先级。
  • 如果您浏览位于open-std.org/pipermail/ranges 的 Ranges 邮件列表存档,您会发现 1) 目前没有发生太多事情,并且 2) 没有人能真正就任何事情达成一致。此外,如果您查看布里斯托尔后的邮件,您会发现没有任何相关内容:isocpp.org/blog/2013/05/… 所以不,不会发生在 C++14 中。
  • 为什么引入范围这么麻烦?”因为没有人真正知道范围是什么,应该是什么意思等等。 Ranges SG 似乎分为 Boost.Range 阵营和认为 Ranges 应该是基本对象的阵营(又名:D.Range 阵营),而不仅仅是一对专门的迭代器。

标签: c++ c++14


【解决方案1】:

这是否意味着它不会成为 C++14 的一部分?

是的,确实它不会成为 C++14 的一部分。不幸的是,没有人愿意为提案工作。

如果是这样,为什么引入范围这么麻烦?

很难说。有时原因是不同的人对什么应该标准化以及如何标准化有不同的期望(参见模块或概念),有时仅仅是因为该功能的形式化比紧迫性更复杂。

此外,最常发生的情况是 Boost 库被视为实验性的、原始标准的实现;虽然对于 Boost.Thread、Boost.Function 和 Boost.Bind 等库有足够的经验和共识——因此它们很顺利地标准化了——但并不是每个人都对 Boost.Range 感到满意,主要是因为它缺乏广泛的, 对函数式编程的高级支持。

【讨论】:

  • 缺乏对函数式编程的广泛、高级的支持。”到底是什么样的?
  • @NicolBolas:类似于 Haskell。
  • 为什么我们希望 C++ 看起来像 Haskell?另外,people did submit proposals on elements of ranges.
  • @NicolBolas:我们中的许多人,我会建议你回到“不同的人有不同的期望”这一说法
  • @NicolBolas:我猜,因为它富有表现力且功能强大 - 并且由于惰性评估,效率相当高。请注意,这不一定反映我自己的 观点。我只是想弄清楚为什么范围没有进入 C++14。谢谢你的链接,我不知道。
猜你喜欢
  • 2022-11-04
  • 1970-01-01
  • 2011-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 2021-08-06
  • 1970-01-01
相关资源
最近更新 更多