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

时间:2015-06-04 14:10:59

标签: c++ boost stl c++17

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

然而标准库中尚未涉及的its libraries的当前状态是什么?

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

4 个答案:

答案 0 :(得分:15)

我不会重复已经完成的有关网络,算法,文件系统,变体和任何内容的工作。但是,我可以讨论一下你对signal2的观点以及更多一点。

Boost.Signals2

过去Boost.Signals2已提议将

N2086纳入TR2。实际上它更像是Boost.Signals2和libsigc ++之间的混合。根据我的阅读,人们更倾向于将信号纳入标准,但该论文需要更多的工作,而这项工作从未完成[ citation needed ]。

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

Boost.Container

不要误解我的意思,Boost.Container并未被提议作为一个整体包含在C ++ 17中。但是,库确实对某些提案有一些影响。原因如下:

  • N4510建议某些标准容器可以包含不完整的类型,以便您可以使用#34;递归"类型。以下是本文的最小例子:

    struct Entry
    {
        std::list<Entry> messages;
        // ...
    };
    

    本文仅建议std::vectorstd::liststd::forward_list具有这些要求,以便GCC,Clang和MSVC库符合C ++ 17标准,开箱即用,并鼓励他们实施其他标准容器,以便他们也能适应这个习语。这种递归容器实际上是Boost.Container在标准库容器上带来的第一个改进之一。

  • N4526讨论了游戏行业和嵌入式行业对C ++及其标准库的关注。除此之外,它还指出,很多人实际上只是在等待某人撰写论文,建议将Boost.Container中的boost::flat_mapboost::flat_set纳入标准库。虽然它可能根本没有写,或者至少没有及时写入C ++ 17,但是可以接受写得很好的论文。 更新: P0038实际上建议考虑将扁平容器纳入标准库。

Boost.Algorithm

虽然这个库是相当新的(2012,Boost 1.50),但它有助于形成一些新算法,这些算法已包含在库基础知识TS和/或C ++ 17中:

  • N4536P0025建议标准化clamp函数以钳制一对边界值之间的值。提案中提到Boost.Algorithm的clamp函数作为设计灵感的来源。

  • N3905以及随后针对修复设计错误的论文提出了标准化新搜索算法,最着名的是Boyer-Moore和Boyer-Moore-Horspool字符串搜索算法,这些算法都存在于Boost中。算法自创建以来。

杂项

Boost的其他功能列表已经讨论过,或者对某些提案产生了很大影响:

  • 它没有进入C ++ 14,但是受Boost.Optional启发的std::optional应该在没有问题的情况下进入C ++ 17。

    < / LI>
  • Special Math Functions已合并到C ++ 17中。这些功能是TR1和Boost的一部分.Math已将它们包括多年。

  • std::not_fn被合并到C ++ 17中,并且已经在Boost中生活了多年。

  • P0013建议将元函数and_or_not_添加到标准库中,并引用Boost.MPL作为已实施的标准库之一这样的功能很长一段时间。 C ++ 17中采用的更新:std::conjunctionstd::disjunctionstd::negation

  • P0033表示std::enable_shared_from_this被指定为弱,并建议标准化与Boost的实用程序版本相同的行为。它还建议标准化boost::weak_from_this以完成家庭。

  • 许多建议的并发功能已经在Boost(std::barrierstd::latch ...)中。但是,应该注意它们已经在Boost 中实现,因为它们已经被提议包含在标准库中。这一次,它反过来了。对其他已经存在的类进行一些修改也是如此。

答案 1 :(得分:10)

anyvariant引起了很多人的兴趣,Boost.Algorithm的搜索内容在图书馆基础知识TS中。

据我所知,没有人提出过Signals2或Lockfree。

答案 2 :(得分:6)

网络库主要基于<div id="img1"></div> <div id="img2"></div> <div id="img3"></div> <div id="img4"></div> <div id="img5"></div> <div id="img6"></div> <div id="img7"></div> <div id="img8"></div> <div id="img9"></div> <div id="img10"></div> <div id="img11"></div> <div id="img12"></div> <div id="img13"></div> <div id="img14"></div> <div id="img15"></div>
基于boost.asio

的文件系统库

答案 3 :(得分:1)

我不知道该提案是否适用于C ++ 17,但range-v3(松散地基于提升范围)被提议包含在C ++标准中。