独立的shared_ptr;执行?
有谁知道我可以在程序中使用 TR1 shared_ptr
(也许还有其他智能指针)的开源独立实现?
注意:
“shared_ptr 的独立实现
”表示shared_ptr
本身需要是独立的。
不仅仅是包含库。
所以请不要提升!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
shared_ptr
的 boost 实现完全是头文件,因此安装 boost 来使用它就像下载 boost 并将其添加到编译器的头文件搜索路径一样简单。使用 boost 实现这一点并不比任何其他独立实现更难。如果您只想提取shared_ptr
组件来进行单独的分发,那么您可以使用 增强 BCP。The boost implementation of
shared_ptr
is entirely header-only, so installing boost to use it is as simple as downloading boost and adding it to your compiler's header search paths. This is no harder with boost than with any other stand-alone implementation. If you want to extract just theshared_ptr
component to make a separate distribution, then you can use Boost BCP.你可以很容易地修改 wxWidgets 中的sharedptr.h 头来删除一些宏依赖项(assert、“explicit”关键字等)。然后,您需要替换或删除内部引用计数变量的原子递增/递减。重命名模板并将其粘贴到命名空间中。然后您将拥有一个单文件独立版本的shared_ptr。
这样做的优点是您正在修改的源代码已经得到了广泛的使用和同行评审。
You can hack the sharedptr.h header in wxWidgets pretty easily to remove the few macro dependencies (assert, "explicit" keyword, etc.). You then need to replace or remove the atomic inc/dec of the internal reference counting variable. Rename the template and stick it in a namespace. Then you'll have a single-file stand-along version of shared_ptr.
This has the advantage that the source you are modifying has had some wide usage and peer review.
您可以使用 Boost BCP 从 Boost 中提取组件。
You can use Boost BCP to extract components from Boost.
呵呵,我想我自己做的东西可能比
shared_ptr
更好:示例用法:
它看起来比
shared_ptr
更容易使用,恕我直言。它是否有任何我错过的陷阱(除了明显的线程不安全之外)?
任何(建设性的)批评表示赞赏。
Huh, I guess something I made myself might be even better than
shared_ptr
:Sample usage:
It looks easier to use than
shared_ptr
, IMHO.Does it have any pitfalls which I missed (aside from the obvious thread-unsafety)?
Any (constructive) criticism appreciated.
我自己一直在寻找这样的东西——像你一样,我有一个项目,其中包含大量的 Boost 是完全不可接受的。
我发现了这个:
http://www. lri.fr/~marc/EO/eo/doc/html/shared__ptr_8h-source.html
我不知道代码质量,因为它是 GPL2,这意味着我不能在我的专有代码中使用它,但它似乎没有依赖性。但这似乎确实是你问题的答案。
I've been looking for such a thing myself --- like you, I have a project where including huge wads of Boost is totally unacceptable.
I've found this:
http://www.lri.fr/~marc/EO/eo/doc/html/shared__ptr_8h-source.html
I have no idea of the code quality, as it's GPL2 which means I can't use it in my proprietary code, but it seems to have no dependencies. But it does seem to be an answer to your question.