3

次のコードはVisualStudio2010ではコンパイルされません(ただし、GCCでは正常に動作します)。

using namespace std;
unique_ptr<string> up(new string("abc"));
auto bound = bind(&string::size, move(up));
bound();

私が得るエラーは次のとおりです。

'std :: unique_ptr <_Ty> :: unique_ptr':クラスで宣言されたプライベートメンバーにアクセスできません' std :: unique_ptr <_Ty> '

VS2010バインドの実装が移動のみの型をサポートしていないためですか?

4

1 に答える 1

7

あなたの推測は正しいです:のVisual C++2010実装std::bindは移動に対応していません。バグレポート「std::bindおよびstd::functionはmove-awareではありません」を参照してください。

これは、次のバージョンであるVisual C++11で修正されています。修正は9月にリリースされたVisualC++DeveloperPreviewに含まれているはずです。

于 2012-01-18T01:11:38.943 に答える