小编Sco*_*tty的帖子

std :: mem_fun vs std :: mem_fn

std::mem_fun和之间有什么区别std::mem_fn?为什么命名如此令人困惑?

Boost的文档说在大多数情况下std::mem_fn都可以替代std::mem_fun.那你在什么情况下仍会使用std::mem_fun

c++ std member-functions c++11

30
推荐指数
1
解决办法
8601
查看次数

绑定到weak_ptr

有没有办法将std :: bind绑定到std :: weak_ptr?我想存储一个"弱函数"回调,当被调用者被销毁时,它会自动"断开连接".

我知道如何使用shared_ptr创建一个std :: function:

std::function<void()> MyClass::GetCallback()
{
    return std::function<void()>(std::bind(&MyClass::CallbackFunc, shared_from_this()));
}
Run Code Online (Sandbox Code Playgroud)

但是返回的std :: function使我的对象永远保持活着.所以我想将它绑定到weak_ptr:

std::function<void()> MyClass::GetCallback()
{
    std::weak_ptr<MyClass> thisWeakPtr(shared_from_this());
    return std::function<void()>(std::bind(&MyClass::CallbackFunc, thisWeakPtr));
}
Run Code Online (Sandbox Code Playgroud)

但那不编译.(std :: bind将不接受weak_ptr!)有没有办法绑定到weak_ptr?

我已经找到了关于这个的讨论(见下文),但似乎没有标准的实现.存储"弱功能"的最佳解决方案是什么,特别是如果Boost不可用?


讨论/研究(所有这些都使用Boost并且没有标准化):

c++ bind callback weak-ptr std-function

18
推荐指数
2
解决办法
8553
查看次数

标签 统计

c++ ×2

bind ×1

c++11 ×1

callback ×1

member-functions ×1

std ×1

std-function ×1

weak-ptr ×1