#include <memory>
#include <functional>
class A{ //non-copyable
std::unique_ptr<int> a;
public:
void operator()(){} //non-const
};
void func(std::function<void(void)> f)
{}
int main()
{
A fobj;
func(fobj);
return 0;
}
如上,需要传递一个A的函数对象给func,并且fobj不能是const型的。怎样实现呢?
次のオプションが利用可能です:
A のリファレンスを使用します。デメリット:Aが破壊されると参照が無効になります。
移動セマンティクスを使用してshared_ptrを構築します。欠点: 実行時のオーバーヘッドが追加され、移動可能な構造が必要になります。
リーリーまたは、コピー時にオブジェクトを移動するラッパーを介して (移動可能な構成が必要):