【问题标题】:Why do I need Boost.SmartPtr for the C++ compiler that supports C++11 and later?为什么支持 C++11 及更高版本的 C++ 编译器需要 Boost.SmartPtr?
【发布时间】:2022-01-03 15:02:39
【问题描述】:

boost C++ 库是一个著名的沙箱,用于存储标准 C++ 的每个新版本所吸收的语言和标准库功能。然而,最终成为标准一部分的升压组件仍然存在于升压中。上述的经典示例之一是智能指针。那么为什么支持 C++11 及更高版本的 C++ 编译器需要Boost.SmartPtr

【问题讨论】:

  • 人们在生产代码中使用 Boost,因此保持兼容性是(Boost 的)目标。
  • 即使被吸收的东西仍然在 boost 中继续发展(标准不允许如此迅速地发生)。例如,boost::enable_shared_fromenable_shared_from_this 的类型擦除替代方案。
  • @RichardCritten 这是一个很好的观点,我同意。
  • @StoryTeller-UnslanderMonica 这是很有价值的一点!也想过但没有好的例子
  • 同样有趣的是更普遍的问题stackoverflow.com/questions/8851670/…

标签: c++ c++11 boost smart-pointers


【解决方案1】:

为什么支持 C++11 及更高版本的 C++ 编译器需要 Boost.SmartPtr?

因为:

  1. 您可能需要使用另一个不支持 C++11 或更高版本的编译器来编译您的程序。
  2. 您可能不想自己实现make_unique。当然这很容易,但既然可以使用现有的实现,为什么还要这样做呢?
  3. 除了共享指针之外,您可能还想使用 Boost.SmartPtr 提供的智能指针之一。
  4. 您可能已经在使用它,并且不想为停止使用它付出代价。

【讨论】:

  • 仅供未来读者参考make_unique从C++14开始用标准C++实现
  • @eeroika 你能提供#3的例子吗?
  • @nickolay 查看 Boost.SmartPtr 文档中的智能指针列表。
  • 谢谢,我明白了。只是以为您的指尖上有一个真实世界的例子。这样的例子总是在教人!
猜你喜欢
  • 1970-01-01
  • 2016-12-19
  • 1970-01-01
  • 2020-12-17
  • 2021-11-10
  • 1970-01-01
  • 2023-03-03
  • 2023-03-09
  • 2017-01-13
相关资源
最近更新 更多