Boost C++ 库

...世界上最受尊敬和设计最精良的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

Boost 常见问题解答

如何下载库? 请参阅下载

Boost 版本号的含义是什么? 方案是 x.y.z,其中 x 仅在发生大规模更改(例如许多库的重组)时递增,y 在添加新库时递增,z 在维护版本时递增。如果左侧的值发生更改,则 y 和 z 将重置为 0。

是否有任何保证库实际上按声明的方式工作? 没有。审查过程有望消除最严重的缺陷库,但一个结构良好、具有隐藏缺陷的库很可能会漏网。鼓励普通用户报告他们使用库的经验旨在解决此类问题。请参阅测试结果,以了解库在特定平台上运行情况。

如何在重要项目中成功使用 Boost 库? 许多 Boost 库都在积极维护和改进,因此与先前版本的向后兼容性并非总是可行。通过冻结项目使用的 Boost 库版本来解决此问题。仅在项目生命周期中进行少量更改不会导致问题的时点进行升级。单个错误修复始终可以从 Boost 存储库中获取。

如何为开发做贡献? 要参与开发,您需要订阅 Boost 开发人员列表。 完成此操作后,以下是一些贡献途径:

  1. 提交新功能或错误修复的补丁。从 GitHub 上的 我们的错误跟踪系统中选择任何工单并开始。如果现有的库维护人员还不了解您的工作,这是一种很好的方式,让他们知道您是可以信任的、能够做好工作的人。
  2. 成为特定库社区的一部分,并通过参与设计讨论(某些库,例如 Spirit,有自己的 邮件列表,您可以在其中进行讨论)来让库维护人员了解您。
  3. 提出您自己的库想法并开始库提交过程

如何接受一个库并在网站上发布? 请参阅 库提交流程

如何提交正式评审意见? 发送电子邮件至 [email protected]。 有关更多信息,请参阅正式评审页面。

如何提交库? 请参阅库指南

是否接受需要付费的商业库? 不。但是,商业企业免费提供的库是可以接受的。如果库的描述为供应商做了低调的宣传,只要该库提供了真正的价值,而不仅仅是宣传的特洛伊木马,那也是可以接受的。

是否接受共享库? 不。仅接受免费库。

是否接受开源许可库? 一些是,许多不是。开源许可证通常要求重新分发或提供源代码,在机器可执行的重新分发中包含许可证文档,赋予初始开发人员对被许可人修改的权利,或需要律师来理解。Boost 旨在避免让用户受到难以遵守的许可条款的约束。请参阅 许可证要求

这会根据特定重要软件或行业变化进行审查。

是否必须提供完整的源代码? 是的,这些是源代码库。

文档呢? 一个非常简单的库可能只接受一个注释良好的头文件。对于更重要的库,肯定会期望某种形式的文档。 HTML 是首选形式。

是否接受特定于平台的库? 首选可移植库。将接受具有可移植接口但需要特定于平台实现的库,前提是作者为几个不同的主要操作系统提供实现。

库是否必须执行有用的工作? 不。作为教学示例或演示的库可能实际上不执行任何工作。

Boost 是否可以接受现有库? 是的,尽管它必须经过“Boost化”才能满足要求。 Boost Graph 和 Regex 库是最初在其他地方开始的库的示例。

谁拥有这些库? 据推测,许多作者将拥有其库的版权。其他作者可能希望将其库置于公共领域。Boost.org 的政策是仅接受具有明确版权声明并符合 许可要求的库。由潜在用户决定条款是否可以接受,而不是使用具有不可接受的版权或许可证的库。

Boost.org 与 C++ 标准委员会之间是否存在正式关系? 没有,尽管存在很强的非正式关系,因为委员会的许多成员参与了 Boost,而启动 Boost 的人都是委员会成员。

Boost.org 库是否会成为下一个 C++ 标准的一部分? 有些可能会在未来某天,但这取决于标准委员会。同时参与 Boost 的委员会成员肯定会提出至少一些 Boost 库进行标准化。

“现有实践”的库最有可能被 C++ 委员会接受以进行未来的标准化。被 Boost 接受的库是建立现有实践的一种方式。

“Boost”这个名字从何而来? Boost 起源于 Robert Klarer 和我在 1998 年法国索菲亚安提波利斯举行的 C++ 委员会会议上共进晚餐时,对一项新的库工作进行了幻想。 Robert 提到 Herb Sutter 正在为一种名为 Booze 的新语言提出恶搞提案,该语言应该比 Java 更好。不知何故,这引发了以“Boost”作为名称的想法。那时我们可能喝了几杯不错的法国葡萄酒。这只是一个工作名称,但从来没有人想出替代名称。(Beman Dawes)

该网站是商业企业吗? 不。Boost 基金会注册为非营利性公司,并正在申请 503(c)(3) 免税地位。

向 Boost.org 提交库或评论是否需要付费? 不。与标准委员会不同,您不必付费就可以志愿服务!

该网站是否会包含库之外的材料? 主要重点是库,但如果人们贡献一些文章或其他材料使网站更有趣,那可能会很不错。

为什么没有单独的 Boost 邮件列表用于我最喜欢的库? Boost 取得成功的原因之一是不同库项目之间思想的交叉传播,以及偶尔不感兴趣的各方对其他线程的关注。参与的人越多,他们就越不容易被“噪音”所困扰。

如何应对大量 Boost 邮件列表消息? 一种方法是使用“摘要”选项;这会将电子邮件狂潮减少到每天几条(长)消息,因此您可以浏览顶部的摘要,并快速阅读您认为重要的内容。“无邮件”选项会完全关闭列表电子邮件。

另一种方法是通过 NTTP 新闻组阅读器关注列表流量。请参阅 邮件列表新闻组信息。

为什么 Boost 头文件使用 .hpp 后缀而不是 .h 或根本没有后缀? 文件扩展名将文件的“类型”传达给人类和计算机程序。“.h”扩展名用于 C 头文件,因此传达了关于 C++ 头文件的错误信息。不使用扩展名不传达任何信息,并强制检查文件内容以确定类型。使用“.hpp”明确将其标识为 C++ 头文件,并且在实际实践中效果良好。(Rainer Deyke)

如果我发现 Boost 代码或文档中的错误该怎么办? 请参阅 错误页面上的建议。

如何请求 Boost 库中的新功能? 请参阅请求新功能页面。

Boost 是谁的想法? 请参阅原始提案 (PDF)。