Допустим, у меня есть функция, принимающая ссылку на rvalue:
void whatever (std::unique_ptr<int>&&) {
// Nothing!
}
... и я привязываю один ее параметр к заполнителю.
auto f = std::bind(&whatever, _1);
Я пробовал вызовыкак это, и результат противоположен тому, что я ожидал.
std::unique_ptr<int> nothing;
f(std::move(nothing)); // Fails to compile!
f(nothing); // Works, but seems wrong!
Это ошибка компилятора?Или рабочий код небезопасен?Или почему мне не нужно std::move
этот указатель на связанную функцию?
Между прочим, ошибка компиляции с gcc4.4:
test.cxx:14: error: no match for call to '(std::_Bind<void (*(std::_Placeholder<1>))(std::unique_ptr<int, std::default_delete<int> >&&)>) (std::unique_ptr<int, std::default_delete<int> >)'