编辑几年后回到此问题在
继续使用越来越多的boost库之后,我想我会更新此问题,以提供一个可靠的案例,说明为什么当产品说明与所需功能匹配时,您应该使用boost。这将说服反对者。下载openSSL,尝试使用它制作一个客户端和服务器应用程序。现在,尝试使它在每个平台上都能工作。然后,下载并使用boost :: asio :: ssl制作相同的应用程序。如果您不相信boost是寻找干净,优化,经过同行评审的跨平台代码的正确地方,那么此简单的练习将为您带来转换。
tl; dr版本:
在我看来,您不会看到大量独立的或中小型的开发公司在使用Boost,因为它是一种庞大而强大的野兽,很难驯服,并且在尝试学习如何进行时基本上是自己的使用它。在某些方面缺少文档(请参阅长版),并且项目周围的“社区”似乎丢失,分散或不活跃(与其他项目相比)。
非常漫长的版本:
我知道已经有一个可以接受的答案,但是作为实际上在我所做的每个项目中都使用boost的人,我想我会发布一个答案。
我记得当我初次接触增强功能时,老实说我不知道发生了什么。Boost并没有得到很好的记录。我敢肯定,人们可能不同意我的观点,因为其中有大量的示例代码片段和注释等,但这都是非常冷淡,含糊且难以导航的。
此外,似乎很难找到在项目周围找到“社区”的任何地方。实际上,社区似乎不存在,或者是游牧民族。不幸的是,即使是他们的邮件列表,也被很多水ech站点所拖曳,您可以沿着这个兔子洞走下去,总是回滚到起点。
这两个因素使学习使用Boost库成为一项相当艰巨的任务。即使使用boost的技术不是太复杂,它也是一个庞大的库集,当您所需要的只是一些代码片段和从Internet上最黑暗的角落分散下来的邮件列表时,就会凝视它... 反正你懂这个意思。
我开始尝试在1.45版附近进行增强,直到现在在1.52 / 1.53版中,我才足够舒服地在生产中使用它。有很多事情要习惯和记住,甚至是简单的事情,例如您如何配置boost和记住该配置,因为库的构建方式和功能可能会根据您在编译时的喜好而发生巨大变化,这取决于可定制的事物是。
但是,请不要误解,一旦您可以使用boost,您就拥有了快速构建可靠的,跨平台程序的强大武器。仅举一个boost::asio
例子。您仅需几百行就可以编写一个功能强大,可扩展且坚如磐石的跨平台异步Web服务器。多年来,我编写了多个客户端,服务器,代理等,每行只有几百行代码,但还没有让我失望,并且可以在几分钟内将它们从一个平台移植到另一个平台。
正如其他人指出的那样,大型公司通常会留有遗留的东西,或者喜欢自己推出自己完全理解的东西。在开发主管和/或项目经理禁止使用Boost的过程中,我也曾听说过并遇到这种非常愚蠢的事情,因为Boost太大了。我的猜测是,他们认为boost是1个单一库,或者他们从未听说过BCP。
至于为什么我选择使用升压
我说我使用它是因为您在您的问题中暗示它是“ the” C ++库。Boost在C ++世界中被视为瑞士军刀,最终您将需要使用它们。因此,想法是,如果有需要,应该有一个高性能的便携式版本。大公司为促进工作做出了贡献,受过良好教育的人以令人印象深刻的简历做出了贡献,并保持了这种状态,而当开发新的C ++标准时,人们通常会寻求推动,看看其中哪些部分应成为ISO标准化C ++。
因此,如果我需要添加一些可能存在现有库的功能,那么我将首先看到的地方就是boost,因为我敢打赌它的优化性,可移植性非常好,它将得到支持和维护很长的时间,将发现并处理错误。在开源世界中,很难获得这些品质。