Во время обзора кода я обнаружил, что функция C ++, ожидающая, что unique_ptr передается uniqe_ptr с помощью std :: move, но при этом функция не перемещает unique_ptr в качестве возвращаемого значения и не присваивает вызывающей стороне возвращаемый unique_ptr обратно в его unique_ptr, поэтому яЯ ожидаю, что это приведет к сбою.
Пример:
std::unique_ptr<X> fun(std::unique_ptr<X> p) {
// Do something with the unique_ptr p
return p;
}
В другом месте я нашел следующие звонки:
void someFunction() {
auto p = std::make_unique<X>();
//...
fun(std::move(p));
// Do something else
fun(std::move(p));
//...
}
Так что мне интересноэтот код в порядке, или если это просто удача, что он выполняется.
[EDIT]: завершен пример