我经常在这里看到有关提升的说明,例如
如果您使用Boost很好......
或
如果你可以使用Boost ......
我想知道,那到底是什么?我应该厌倦什么?当我不能使用提升?不使用提升的原因是什么? 在我看来,提升是STL的伟大扩展,有时非常重量级和笨拙,但仍然很好。
我并不是真的在提出有关提升的意见。我更愿意在使用boost之前考虑一些具体的例子。
答案 0 :(得分:13)
什么时候我不能使用提升?在我看来,提升是STL的重大延伸, 有时非常重量级和笨拙,但很棒。
Boost不是一个图书馆,而是一个基本上独立的图书馆的个人品质集合。考虑到这一点,并考虑到我个人是Boost的大部分粉丝,这里有一些我不能使用某些Boost库的原因:
答案 1 :(得分:8)
因为不是C ++标准库的扩展(当然也不是STL的扩展)。
这是第三方发行版,您必须在本地下载和安装,并且(对于某些Boost库,如果您动态链接)在目标系统上。您必须管理并记录依赖项。
我想要列举所有不可行的场景,但不言而喻,您不能总是使用非标准代码。并非所有人都在一个平台上工作,您只需编写yum install boost-devel
,编写代码并继续。计算机世界远远超出商用台式PC。
话虽如此,由于其极端的可移植性以及大多数Boost库仅为标头(这显着降低了封装开销)这一事实,避免Boost的大多数论点都非常弱。
看起来好像没什么毛茸茸
我不认为写短语"如果你可以使用Boost" 可以诚实地描述为"很多[fuss]&#34 ;
答案 2 :(得分:5)
主要是维护。
添加提升后,您必须维护它。获取更新(并维护任何更改,强制更改代码),或冻结版本并自行修复错误。
两者都是昂贵的并且需要支付成本。对于具有数十年寿命的项目,这样的成本非常重要。
答案 3 :(得分:3)
除了@ LightnessRacesInOrbit的point之外,我想说有几个原因:
.h
和.hpp
文件中有很多代码,您需要将其包含在每个翻译单元中(使用Boost的相关部分),以及这些文件充满了复杂和递归的宏使用和智能 - 但同样,复杂 - 使用模板。这种组合使你的编辑速度变慢了。