对于结构后:测试的std ::功能有效性结合成员函数
struct A {
int var = 10;
void check() {
std::cout << "var is " << var << std::endl;
}
};
说我创建的A::check()
一个std ::功能对象,使用动态分配的a
对象:
auto a_ptr = std::make_unique<A>();
std::function<void()> f = std::bind(&A::check, a_ptr.get());
//...later/elsewhere...
f();
如果我可以测试f
以查看绑定的A
对象是否仍然存在,那将会很安全。是否可以直接从f
检索该信息?假设a_ptr
不能从呼叫点访问,所以我无法直接对a_ptr
进行测试。使用std::function
的运营商bool
或测试f
对nullptr
不起作用。
你基本上问[this](http://stackoverflow.com/q/11680680/636019)(假设这是[XY问题](http://meta.stackexchange.com/q/66377/166663) ))? – ildjarn
不确定这是一个XY问题,而是使用'std :: weak_ptr'并在调用之前检查它是解决此问题的体面解决方案。 – TartanLlama
@TartanLlama:首先使用'bind'而不是lambda是什么使它成为IMO的XY问题。 – ildjarn