在我的项目中,我使用boost::asio
进行网络和线程管理。我想使用现代C ++的一些功能,例如共享指针。
有两种选择:boost::shared_ptr
,因为我已经在使用Boost,而std::shared_ptr
因为我使用的是C ++ 11编译器。据我所知,这些基本上是等价的,但它们彼此不相容。
我读过我应该更喜欢Boost上的标准库组件,而不是毫无意义地使用外部依赖。但是我仍然会使用Boost(至少直到他们决定将ASIO集成到标准库中),所以我仍然需要依赖。
共享指针只是一个示例,此问题适用于标准库从Boost接管的所有功能,例如function
,bind
,thread
等。
鉴于我的情况,这是该功能的首选实现?有没有关于选择的问题,在使用其他Boost或标准库组件时,我需要特别使用Boost或标准库版本?
答案 0 :(得分:6)
虽然Boost是未来C ++标准的事实上的支持者,但它是否不标准化,所以如果选择Boost而不是C ++标准库,那么你总是受到兼容性中断的支配。 (例如,参见Boost Spirit的历史性突破性变化)。
因此,始终编写代码,以便尽可能迁移到C ++标准库。
使用C ++标准库函数也可以更容易地进行编译器优化,因为它们的精确行为是由标准定义的。