我发现以下代码无法在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&lt; _Ty&gt; :: unique_ptr':无法访问私人会员 在类'std :: unique_ptr&lt; _Ty&gt;'
中声明
是否因为VS2010绑定实现不支持仅移动类型?
答案 0 :(得分:7)
您的猜测是正确的:std::bind
的Visual C ++ 2010实现不支持移动。请参阅错误报告"std::bind and std::function are not move-aware."
这是在即将推出的版本Visual C ++ 11中修复的。修复程序应该出现在9月发布的Visual C ++ Developer Preview中。