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

标签 c++ c++11 boost

<分区>

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

有两个选择:boost::shared_ptr,因为我已经在使用 Boost,以及 std::shared_ptr,因为我正在使用 C++11编译器。据我了解,它们基本上是等价的,但是它们彼此不兼容。

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

共享指针只是一个例子,这个问题适用于标准库从Boost接手的所有特性,比如function, bind, thread

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

最佳答案

虽然 Boost 是 future C++ 标准的实际提供者,但它不是标准化的,所以如果您选择 Boost 而不是 C++ 标准库,您总是会受到兼容性破坏的影响。 (有关示例,请参阅 Boost Spirit 的历史性突破性更改)。

因此,在编写代码时应尽可能迁移到 C++ 标准库。

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

关于c++ - 如果我已经在使用 Boost,我应该更喜欢 Boost 还是 C++11 标准库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46667113/

相关文章:

c++ - 将 %E6%B0%94%E6%97%8B%E5%93%88%E5%88%A9.txt 解码为有效字符串

c++ - 需要解释一下代码

c++ - 将重载函数(如 std::stoll)打包到 std::function

C++ lambda 。需要如何捕获指针?

c++ - 您如何使用任何 Boost 多精度库类型找到两个非常大的数字的模逆? (cpp_int、gmp_int 等)

c++ - Win 事件替换为 boost 信号(线程安全)

c++ - 在创建应用程序时记录应用程序的事件并使用 Visual Studio C++ 进行测试

c++ - 错误 C2075 : array initialization needs curly braces

c++ - 找不到 CreateProcess() C++ 文件

c++ - Boost.Asio:不能使用 std::bind() 来指定回调