次のような関数が与えられた場合
void MyFunction(std::unique_ptr<int> arg);
次のようなファンクターを作成することはできません (MSVC 2012)
std::function<void(std::unique_ptr<int>)> f = std::bind(&MyFunction, std::placeholders::_1);
問題はバインドではありません-使用すると機能しauto f = std::bind(...)
ます。また、 a の使用shared_ptr
も機能します
- unique_ptr が許可されないのはなぜですか?
- これは MSVC の問題ですか、それとも一般的な C++11 の制限ですか?
- 関数定義を変更せずに回避策はありますか?