Внедрение VS2010 не поддерживает типы только для перемещения? - PullRequest
3 голосов
/ 18 января 2012

Я обнаружил, что следующий код не компилируется в 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 просто не поддерживает только типы перемещения?

1 Ответ

7 голосов
/ 18 января 2012

Ваше предположение верно: реализация std::bind в Visual C ++ 2010 не учитывает перемещение. См. Отчет об ошибке, "std :: bind и std :: function не учитывают перемещение."

Это исправлено в следующей версии Visual C ++ 11. Это исправление должно присутствовать в предварительной версии Visual C ++ Developer, выпущенной в сентябре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...