MCPcopy Create free account
hub / github.com/FastLED/FastLED / unique_ptr

Class unique_ptr

src/fl/stl/unique_ptr.h:36–126  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

34
35template<typename T, typename Deleter = default_delete<T>>
36class unique_ptr {
37public:
38 using element_type = T;
39 using deleter_type = Deleter;
40 using pointer = T*;
41
42private:
43 pointer mPtr;
44 Deleter mDeleter;
45
46public:
47 // Constructors
48 constexpr unique_ptr() FL_NOEXCEPT : mPtr(nullptr), mDeleter() {}
49 constexpr unique_ptr(fl::nullptr_t) FL_NOEXCEPT : mPtr(nullptr), mDeleter() {}
50 explicit unique_ptr(pointer p) FL_NOEXCEPT : mPtr(p), mDeleter() {}
51 unique_ptr(pointer p, const Deleter& d) FL_NOEXCEPT : mPtr(p), mDeleter(d) {}
52 unique_ptr(pointer p, Deleter&& d) FL_NOEXCEPT : mPtr(p), mDeleter(fl::move(d)) {}
53
54 // Move constructor
55 unique_ptr(unique_ptr&& u) FL_NOEXCEPT : mPtr(u.release()), mDeleter(fl::move(u.mDeleter)) {}
56
57 // Converting move constructor
58 template<typename U, typename E>
59 unique_ptr(unique_ptr<U, E>&& u) FL_NOEXCEPT
60 : mPtr(u.release()), mDeleter(fl::move(u.get_deleter())) {}
61
62 // Copy semantics deleted
63 unique_ptr(const unique_ptr&) FL_NOEXCEPT = delete;
64 unique_ptr& operator=(const unique_ptr&) FL_NOEXCEPT = delete;
65
66 // Move assignment
67 unique_ptr& operator=(unique_ptr&& u) FL_NOEXCEPT {
68 if (this != &u) {
69 reset(u.release());
70 mDeleter = fl::move(u.mDeleter);
71 }
72 return *this;
73 }
74
75 // Converting move assignment
76 template<typename U, typename E>
77 unique_ptr& operator=(unique_ptr<U, E>&& u) FL_NOEXCEPT {
78 reset(u.release());
79 mDeleter = fl::move(u.get_deleter());
80 return *this;
81 }
82
83 // nullptr assignment
84 unique_ptr& operator=(fl::nullptr_t) FL_NOEXCEPT {
85 reset();
86 return *this;
87 }
88
89 // Destructor
90 ~unique_ptr() FL_NOEXCEPT {
91 if (mPtr) {
92 mDeleter(mPtr);
93 }

Callers

nothing calls this directly

Calls 2

resetFunction · 0.50
releaseMethod · 0.45

Tested by

no test coverage detected