【发布时间】:2013-01-15 09:50:35
【问题描述】:
我正在阅读 Boost 数组文档,我看到了这一行:
如果你使用 C++11,你应该考虑使用 std::array 而不是 boost::array
我的印象是,对于它的主要库来说,Boost 总是比标准库更可取,因为:
- boost 的性能永远不会比标准库差
- boost 可能会提供更多功能
- boost 的质量终于与标准 lib 相同(编写 C++ 标准的人是积极的 boost 开发人员/主管)
- 几年后,主要的增强功能最终出现在标准库中
那么我更喜欢 boost 而不是 stdlib 是否正确?
如果不是/更复杂,我的哪些假设需要纠正?
【问题讨论】:
-
#2 肯定是真的(几乎任何“可能”发生的事情)。 #1是没有根据的,即使在实践中是正确的。 #3 不遵循,也是主观的。 #4 可能是真的,也可能不是,但无论如何在这种情况下并不意味着什么。
-
我发现使用 boost 库时编译时间可能会更长,因为必须引入大量编译器解决方法文件,而供应商的标准库实现可以仅用于一种编译器实现。
-
声明的主要部分是“如果您使用的是 C++11”。这是关键,因为 boost 目前是一个 C++03 库。我确信 boost 会为 C++11 开发一些很棒的新版本,并且可能还会有一些新版本,所以 boost 不会完全消失。
-
@CashCow 不幸的是,情况并非如此。最新的提升需要编译为 C++11 才能解锁所有功能。
-
#1 是错误的:例如:来自 VS 的 make_shared 具有当时 Boost 所没有的性能优化,它可能是后来添加的