std::unique_ptr — exclusive ownership smart pointer. Non-copyable, movable.
1#include <memory>23class Resource {4public:5 Resource() { std::cout << "Acquired\n"; }6 ~Resource() { std::cout << "Released\n"; }7};89// Create unique_ptr10auto ptr = std::make_unique<Resource>();1112// Transfer ownership13auto ptr2 = std::move(ptr); // ptr is now nullptr1415// Release ownership16Resource* raw = ptr2.release();17delete raw;1819// Reset20ptr2.reset(new Resource());2122// Custom deleter23auto custom = std::unique_ptr<FILE, decltype(&fclose)>(24 fopen("file.txt", "r"), &fclose25);
Key properties: