如果我已经使用Boost,我应该更喜欢Boost还是C ++ 11标准库?

时间:2017-10-10 12:43:07

标签: c++ c++11 boost

在我的项目中,我使用boost::asio进行网络和线程管理。我想使用现代C ++的一些功能,例如共享指针。

有两种选择:boost::shared_ptr,因为我已经在使用Boost,而std::shared_ptr因为我使用的是C ++ 11编译器。据我所知,这些基本上是等价的,但它们彼此不相容。

我读过我应该更喜欢Boost上的标准库组件,而不是毫无意义地使用外部依赖。但是我仍然会使用Boost(至少直到他们决定将ASIO集成到标准库中),所以我仍然需要依赖。

共享指针只是一个示例,此问题适用于标准库从Boost接管的所有功能,例如functionbindthread等。

鉴于我的情况,这是该功能的首选实现?有没有关于选择的问题,在使用其他Boost或标准库组件时,我需要特别使用Boost或标准库版本?

1 个答案:

答案 0 :(得分:6)

虽然Boost是未来C ++标准的事实上的支持者,但它是否标准化,所以如果选择Boost而不是C ++标准库,那么你总是受到兼容性中断的支配。 (例如,参见Boost Spirit的历史性突破性变化)。

因此,始终编写代码,以便尽可能迁移到C ++标准库。

使用C ++标准库函数也可以更容易地进行编译器优化,因为它们的精确行为是由标准定义的。