5

I've noticed how in C++11, C++14 and onward, more and more Boost libraries are adopted/incorporated into the actual language standard (or into TS documents, which are likely to end up as part of the standard): Boost.optional, Boost.Any, Boost's threading library, smart pointers, etc. etc.

Are these libraries now maintained solely for usage with C++ code using an older version of the language standard, or do they have additional use? Specifically, are some of them considered alternative semantic variants to the choices of the C++ standards bodies?

4

2 回答 2

3

Boost 和标准版本之间的一个区别是 Boost 可能具有弃用的功能(经过讨论和经验确定的设计方面存在问题,因此没有添加到标准中)或标准的扩展(因为 Boost 可能有更多比标准更灵活,因此具有未纳入标准的功能)。

例如,Boost.Thread 的文档列出了与标准库相比的几个弃用和扩展。

根据您的需求,这些可能是使用 Boost 超过标准的好理由。

于 2015-07-25T20:14:15.030 回答
1

我不为 / 在 Boost 项目上工作,但是是的,我希望这些功能在可预见的将来会得到维护,以便那些出于任何原因使用旧标准的人(常见原因是“整个项目都是用C++03”或“我们一直在使用编译器 X 版本 ABC,我们担心使用新的编译器版本 DEF 进行测试”)。一个项目拥有的“客户”越多,逐渐更新事物就变得越重要,除非绝对必要,否则不要改变旧行为或删除旧功能。

当然,即使在使用 C++11 或 C++14 的“现代 C++”应用程序中仍然可以使用这些功能(有时它们的语义和/或语法略有不同,因此使用“现代 C++”所需的更改C++”变体不仅仅是“删除#include那个提升”)。仅仅因为有一种新的方式来做某事并不意味着所有的代码编写者都会立即更改他们的所有代码以使用这种方式......所以使用“旧”方式仍然会发生并存在一段时间后它有被采纳。有时会存在细微的差异,需要对源代码进行进一步的修改,因此需要更多的“思考/打字”,这意味着更改不太可能发生。如果它只是一个“替换boost::threadstd::thread” 那么它可能会很快发生。如果您还需要更改一些其他涉及的代码(参数更改顺序,事物的语法/含义发生微妙变化等),那么它更像是“解决这个问题的适当工作”,通常意味着它在开发团队中的优先级较低(特别是如果它也“没有给予太多好处”)

于 2015-07-25T11:17:35.167 回答