gpt4 book ai didi

c++ - 讨论了哪些 boost 库包含在 C++17 中?

转载 作者:IT老高 更新时间:2023-10-28 22:33:38 25 4
gpt4 key购买 nike

对于典型的编程需求,C++11 是一个伟大的里程碑——我们用标准库替换了 95% 的 Boost 代码。

然而its libraries的现状如何?标准库中尚未涵盖的内容?

由于需要 Signals2 和 Lockfree,我开始怀疑。

最佳答案

我不会重复在网络、算法、文件系统、变体等方面已经做过的事情。但是,我可以讨论您关于信号 2 的观点以及更多内容。

Boost.Signals2

Boost.Signals2过去曾由 N2086 提出以纳入 TR2。实际上它更像是 Boost.Signals2 和 libsigc++ 之间的混合。从我读到的内容来看,人们相当赞成将信号纳入标准,但该论文需要更多的工作,而且这项工作从未完成[需要引用]。

现在,为了使论文适合 C++17,还应该做更多的工作,但如果有人愿意完成这项任务,信号可能仍然是一个很好的候选者。

Boost.Container

不要误会我的意思,Boost.Container尚未提议将其作为一个整体包含在 C++17 中。但是,图书馆确实对某些提案产生了一些影响。原因如下:

  • N4510建议一些标准容器可以包含不完整的类型,以便您可以拥有“递归”类型。这是论文中的一个最小示例:
    struct Entry
    {
    std::list<Entry> messages;
    // ...
    };

    论文仅提出std::vector , std::liststd::forward_list有这些要求,以便 GCC、Clang 和 MSVC 库开箱即用地符合 C++17 标准,并鼓励它们实现其他标准容器,以便它们也能适应习语。这种递归容器实际上是 Boost.Container 对标准库容器带来的首批改进之一。
  • N4526讨论游戏行业和嵌入式行业对 C++ 及其标准库的关注。除此之外,它指出许多人实际上只是在等待有人写一篇论文来提议加入boost::flat_map。和 boost::flat_set从 Boost.Container 到标准库。虽然它可能根本不会写出来,或者至少不会及时写到 C++17,但一篇写得很好的论文可以被接受。更新:P0038实际上建议考虑将扁平容器纳入标准库。

  • Boost.算法

    虽然这个库是相当新的(2012,Boost 1.50),但它帮助塑造了一些新算法,这些算法已包含在库基础 TS 和/或 C++17 中:
  • N4536P0025建议标准化一个clamp函数将一个值夹在一对边界值之间。提案中提到了clamp Boost.Algorithm 的函数作为设计的灵感来源。
  • N3905以及随后旨在修复设计错误的论文建议标准化新的搜索算法,最著名的是 Boyer-Moore 和 Boyer-Moore-Horspool 字符串搜索算法,它们自 Boost.Algorithm 诞生以来就一直存在。

  • 杂物

    Boost 的其他特性列表,这些特性被讨论或强烈影响了一些提案:
  • 它没有进入 C++14,但是 std::optional受 Boost.Optional 启发,应该可以毫无问题地将其放入 C++17。
  • Special Math Functions被合并到 C++17 中。这些函数是 TR1 的一部分,Boost.Math 已经包含它们多年了。
  • std::not_fn 被合并到 C++17 中,并且已经在 Boost 中使用了多年。
  • P0013建议添加元函数 and_ , or_not_到标准库并引用 Boost.MPL 作为已经实现这些功能很长时间的标准库之一。更新:在 C++17 中采用为 std::conjunction , std::disjunctionstd::negation .
  • P0033声明 std::enable_shared_from_this弱指定并建议标准化与 Boost 实用程序版本相同的行为。它还建议标准化boost::weak_from_this来完成家庭。
  • 许多提议的并发特性已经在 Boost ( std::barrier , std::latch ...) 中。但是,应该注意的是,它们已在 Boost 中实现,因为它们已被提议包含在标准库中。这一次,它以相反的方式工作。对其他已经存在的类进行一些修改也是如此。
  • 关于c++ - 讨论了哪些 boost 库包含在 C++17 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30646181/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com