3

我发现以下代码在 Visual Studio 2010 中无法编译(但在 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 无法感知移动。”

这已在即将发布的版本 Visual C++ 11 中修复。该修复程序应该存在于 9 月发布的 Visual C++ Developer Preview 中。

于 2012-01-18T01:11:38.943 回答