【问题标题】:What can Boost do that modern C++ cannot? [closed]Boost 能做什么现代 C++ 做不到的? [关闭]
【发布时间】:2019-04-03 14:33:22
【问题描述】:

考虑到最新的现代 C++,即 C++17,Boost 是否有任何现代 C++ 没有的功能?

换句话说:有没有什么现代 C++ 无法完成(通过合理的解决方案)而需要在项目中包含 Boost 作为依赖项?

您能否提供一份此类功能的列表,这些功能在 Boost 中而不在现代 C++17 中?

那么 C++11 和 C++14 呢?

【问题讨论】:

  • 我不明白这个问题。 Boost 是用 C++ 编写的,所以你可以自己做任何事情。
  • 你是问C++11到C++17中是否有没有被纳入标准库的Boost库? (是的,他们中的大多数都没有。)
  • boost 可以为库代码提供一个平台,该平台仍然太实验性/有争议而无法被认为是标准化的,基本上这就是 boost 的目的
  • 是的,但是,例如,在现代 C++ 之前,有很多东西很难自己实现,因此使用 Boost 更有意义。现在,使用现代 C++,您拥有更多不赞成某些 Boost 功能的功能。我想知道在 2019 年将 Boost 添加为项目的依赖项是否合理,或者坚持现代标准 C++ 功能是否足够
  • 我想知道在 2019 年添加 Boost 作为项目的依赖项是否合理,或者坚持现代标准 C++ 功能是否足够这取决于您的需求。如果您需要一个元组,则没有理由。如果您需要一个键和值都作为键的映射,那么您应该只包含 bimap,因为它已经实现了。

标签: c++ c++11 boost c++14 c++17


【解决方案1】:

Boost 有各种各样的库,其中大部分还没有被合并到标准库中。它们包括但不限于:

  • 网络和其他进程间通信
  • 线性代数
  • 序列化
  • 解析
  • 信号和插槽
  • 还有更多...

此外,将 Boost 用于 C++17 为您提供了与旧编译器的一些兼容性。

【讨论】:

    【解决方案2】:

    日期库(在 C++ 标准中存在太多分歧 - 看看 Java 中的混乱情况)、Boost Spirit、多精度和线性代数库是 C++ 标准中没有的东西。

    加上 pi 的定义(尽管我们最终在 C++20 中得到了一个)。

    由于 Boost 中的许多功能最终都会通过极少的更改使其成为标准(std::regexstd::unique_ptrstd::threadstd::unordered_map),因此 Boost 值得坚持使用。

    【讨论】:

    • C++20 正在获取一个日期库。
    • 实际上,date library by Howard Hinnant 被选入了 C++20 的草案(所以虽然还没有,但很快就会有)。
    • @SombreroChicken;我以为你永远不会问。什么样的持续时间?
    • 等等,Bathsheba 有一个浮点数?我从来没有猜到...
    • @Bathsheba:它包括:“用于计算闰秒的几个 时钟,它也受到 IANA 时区数据库的支持。”我不太确定儒略历支持。这更难做到,因为从儒略历过渡到格里高利历的日期差异很大(从 15 世纪的欧洲天主教国家到未来的某个时间——如果有的话——东正教天主教会等等)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 2023-03-12
    • 2016-11-20
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多