0

我正在寻找 boost/ tr1shared_ptr和.weak_ptrenable_shared_from_this

我需要:

  • Boost 这些特性的独立非常小的实现。
  • 我只需要支持现代编译器,如 GCC-4.x、MSVC-2008、英特尔,而不是 MSVC6 或 gcc-3.3
  • 我需要它在非 copyleft LGPL 兼容许可下获得许可,如 Boost/Mit/3-clause BSD。

所以我可以将它包含在我的库中。

注意 - 从 boost 中提取 shared_ptr 非常困难,至少 BCP 提供了大约 324 个文件......

4

3 回答 3

3

我从Boost中提取shared_ptr单独使用,肯定不到300个文件。那是 3 年前的事了,所以事情可能已经发生了变化(也许现在 config 文件夹中有更多文件?)。shared_ptr 我需要的是:

  • 断言.hpp
  • check_delete.hpp
  • throw_exception.hpp
  • config.hpp 和配置目录
  • 详细信息/bad_weak_ptr.hpp
  • 细节/联锁.hpp
  • 详细信息/shared_count.hpp
  • 详细信息/sp_counted_base.hpp
  • 详细信息/sp_counted_base_w32.hpp
  • 详细信息/sp_counted_impl.hpp
  • 细节/workaround.hpp
  • 最后,shared_ptr.hpp 本身。

我不认为 weak_ptr 和 enable_shared_from_this 会添加很多文件。

于 2010-05-01T08:58:15.733 回答
1

最新版本的 GCC 包括 TR1 的实现。

#include <tr1/memory>

这会在命名空间中为您提供您提到的所有三件事std::tr1

于 2010-05-01T08:53:06.307 回答
1

BCP 在组件级别工作,因此组件之间的任何依赖都会导致文件数量激增。

我会尝试将我需要的文件和编译器告诉我但找不到的文件一一包括在内。构建产品时,您应该拥有所需的文件。

这应该会减少很多文件的数量,但会花费您一些时间。

如果 BCP 能够为您做到这一点,这显然是必须的:在文件级别而不是在组件级别工作,并且能够处理条件编译。

于 2010-05-01T08:59:19.523 回答