Re:My favorite Rust function
by SamReidHughes on Saturday October 12, 2019 @07:26PM
(#21237064)
No, it would not free it. It takes a reference to the pointer and does nothing.
[ Parent
| on HN ]
unique_ptr disposes of the object its holding when it goes out of scope unless passed to another unique_ptr or ownership is explicitly released. Presumably klipt would std::move the unique_ptr, hence the universal reference (which seems unnecessary, just pass it by value).
Am I missing something? Does it not work with std::move?
Yes, you're missing that the type `T&&` is a reference, not a value, and so does not run the object's destructor when it goes out of scope.
Sorry, I edited right after hitting reply to clarify that I'm assuming the intention was to std::move the unique_ptr in, since it was T&& and not T&. Would that still not work?
It would still not work. All std::move does is cast to T&&, enabling overload resolution to pick a function with T&& as its parameter type.