對於結構後:測試的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