2012-01-18 59 views
3

我發現下面的代碼不會在Visual Studio 2010中編譯(但在GCC正常工作):VS2010綁定實現不支持移動類型?

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綁定實現少了點支持只移動類型?

回答

7

您的猜測是正確的:std::bind的Visual C++ 2010實現不支持移動。查看錯誤報告,"std::bind and std::function are not move-aware."

在即將發佈的版本Visual C++ 11中修復此問題。此修補程序應該存在於9月份發佈的Visual C++開發人員預覽中。