36template <
class ObjectType>
52 : object (objectToHold),
53 shouldDelete (takeOwnership)
66 : object (std::move (other.object)),
67 shouldDelete (std::move (other.shouldDelete))
109 operator ObjectType*()
const noexcept {
return object.get(); }
112 ObjectType*
get() const noexcept {
return object.get(); }
115 ObjectType&
operator*() const noexcept {
return *object; }
118 ObjectType*
operator->() const noexcept {
return object.get(); }
124 ObjectType*
release() noexcept {
return object.release(); }
147 void set (ObjectType* newObject,
bool takeOwnership)
149 if (
object.
get() != newObject)
152 object.reset (newObject);
155 shouldDelete = takeOwnership;
161 set (newObject,
true);
167 set (newObject,
false);
181 std::swap (other.object,
object);
182 std::swap (other.shouldDelete, shouldDelete);
187 std::unique_ptr<ObjectType> object;
188 bool shouldDelete =
false;
OptionalScopedPointer(ObjectType *objectToHold, bool takeOwnership)
void setNonOwned(ObjectType *newObject)
void set(ObjectType *newObject, bool takeOwnership)
OptionalScopedPointer & operator=(OptionalScopedPointer &&other) noexcept
OptionalScopedPointer(std::unique_ptr< ObjectType > &&ptr) noexcept
OptionalScopedPointer()=default
ObjectType * get() const noexcept
OptionalScopedPointer(ObjectType &ref) noexcept
ObjectType & operator*() const noexcept
ObjectType * release() noexcept
void setOwned(ObjectType *newObject)
void swapWith(OptionalScopedPointer< ObjectType > &other) noexcept
bool willDeleteObject() const noexcept
ObjectType * operator->() const noexcept
OptionalScopedPointer(OptionalScopedPointer &&other) noexcept
~OptionalScopedPointer() noexcept