在 Stack Overflow 上,经常会看到关于 Boost 的笔记,比如:
如果你可以使用 Boost...
或者
如果你愿意使用 Boost...
我想知道这是怎么回事?我应该注意什么呢?什么时候不能使用 Boost?不使用 Boost 的原因是什么?在我看来,Boost 是 STL 的一个很好的扩展;有时非常笨重和不灵活,但仍然很棒。
我并不是真正询问 Boost 的意见。我更想找一些具体的例子,在使用 Boost 之前,应该三思而后行。
在 Stack Overflow 上,经常会看到关于 Boost 的笔记,比如:
如果你可以使用 Boost...
或者
如果你愿意使用 Boost...
我想知道这是怎么回事?我应该注意什么呢?什么时候不能使用 Boost?不使用 Boost 的原因是什么?在我看来,Boost 是 STL 的一个很好的扩展;有时非常笨重和不灵活,但仍然很棒。
我并不是真正询问 Boost 的意见。我更想找一些具体的例子,在使用 Boost 之前,应该三思而后行。
<string>
和<algorithm>
中可用的内容。C++11的lambda表达式使这比以前更容易。我不是在谈论所有直接替换C++11带来的东西(例如std::shared_ptr
与boost::shared_ptr
)。 - Christian Hackl主要是维护。
一旦您添加了提升功能,就必须对其进行维护。 要么获取更新(并维护任何需要更改代码的更改),要么冻结版本并自行修复错误。
这两种方法都很昂贵且成本后置。 对于寿命以十年计的项目来说,这些成本非常重要。
除了 @LightnessRacesInOrbit 的观点外,我认为还有几个原因:
.h
和 .hpp
文件中有大量的代码,每个翻译单元(使用 Boost 相关部分)都需要包含这些文件,并且这些文件使用了复杂和递归的宏以及智能(但同样复杂)的模板。这种组合会使您的编译速度变得非常慢。
std::sort
。 - Lightness Races in Orbit