【发布时间】:2011-03-08 16:54:43
【问题描述】:
我目前正在尝试一些新的 C++0x 功能,即 std::function 和 std::bind。这两个函数似乎非常适合用于 C++ 的事件委托系统,其工作方式类似于 C♯。我之前尝试过自己创建类似委托的东西,但是我需要的成员函数指针的黑客对我来说太多了……
在我的测试中,我注意到 std::bind 会复制您绑定的每个对象。虽然这肯定会提高安全性 - 不能删除仍然注册的事件处理程序 :) - 这也是有状态对象的问题。有没有办法停用复制 - 或者至少有办法再次从 std::function 获取封装的对象?
PS: 是否有关于将包含在 C++0x(希望是 C++11!)中的功能的参考资料,最后它在 TR1 的主要部分和一些补充……
我尝试了 cppreference.org,但他们仍处于文档编制的早期阶段,另一方面 cplusplus.com 似乎甚至还没有开始涵盖 C++0x。
【问题讨论】:
-
现在,您可以随时参考 boost.bind 和 boost.function 文档。我还发现 en.highscore.de/cpp/boost 很有用。
-
谢谢,我认为“新”实现是从 boost 派生的,但经过了改编……