Browse Source

detect dangling references in TMaybe object

swarmer 1 year ago
parent
commit
469e936f82
1 changed files with 18 additions and 18 deletions
  1. 18 18
      util/generic/maybe.h

+ 18 - 18
util/generic/maybe.h

@@ -306,75 +306,75 @@ public:
         }
     }
 
-    const T* Get() const noexcept {
+    const T* Get() const noexcept Y_LIFETIME_BOUND {
         return Defined() ? Data() : nullptr;
     }
 
-    T* Get() noexcept {
+    T* Get() noexcept Y_LIFETIME_BOUND {
         return Defined() ? Data() : nullptr;
     }
 
-    constexpr const T& GetRef() const& {
+    constexpr const T& GetRef() const& Y_LIFETIME_BOUND {
         CheckDefined();
 
         return *Data();
     }
 
-    constexpr T& GetRef() & {
+    constexpr T& GetRef() & Y_LIFETIME_BOUND {
         CheckDefined();
 
         return *Data();
     }
 
-    constexpr const T&& GetRef() const&& {
+    constexpr const T&& GetRef() const&& Y_LIFETIME_BOUND {
         CheckDefined();
 
         return std::move(*Data());
     }
 
-    constexpr T&& GetRef() && {
+    constexpr T&& GetRef() && Y_LIFETIME_BOUND {
         CheckDefined();
 
         return std::move(*Data());
     }
 
-    constexpr const T& operator*() const& {
+    constexpr const T& operator*() const& Y_LIFETIME_BOUND {
         return GetRef();
     }
 
-    constexpr T& operator*() & {
+    constexpr T& operator*() & Y_LIFETIME_BOUND {
         return GetRef();
     }
 
-    constexpr const T&& operator*() const&& {
+    constexpr const T&& operator*() const&& Y_LIFETIME_BOUND {
         return std::move(GetRef());
     }
 
-    constexpr T&& operator*() && {
+    constexpr T&& operator*() && Y_LIFETIME_BOUND {
         return std::move(GetRef());
     }
 
-    constexpr const T* operator->() const {
+    constexpr const T* operator->() const Y_LIFETIME_BOUND {
         return &GetRef();
     }
 
-    constexpr T* operator->() {
+    constexpr T* operator->() Y_LIFETIME_BOUND {
         return &GetRef();
     }
 
-    constexpr const T& GetOrElse(const T& elseValue) const {
+    constexpr const T& GetOrElse(const T& elseValue Y_LIFETIME_BOUND) const Y_LIFETIME_BOUND {
         return Defined() ? *Data() : elseValue;
     }
 
-    constexpr T& GetOrElse(T& elseValue) {
+    constexpr T& GetOrElse(T& elseValue Y_LIFETIME_BOUND) Y_LIFETIME_BOUND {
         return Defined() ? *Data() : elseValue;
     }
 
-    constexpr const TMaybe& OrElse(const TMaybe& elseValue) const noexcept {
+    constexpr const TMaybe& OrElse(const TMaybe& elseValue Y_LIFETIME_BOUND) const noexcept Y_LIFETIME_BOUND {
         return Defined() ? *this : elseValue;
     }
 
-    constexpr TMaybe& OrElse(TMaybe& elseValue) {
+    constexpr TMaybe& OrElse(TMaybe& elseValue Y_LIFETIME_BOUND) Y_LIFETIME_BOUND {
         return Defined() ? *this : elseValue;
     }
 
@@ -434,11 +434,11 @@ public:
     }
 
 private:
-    constexpr const T* Data() const noexcept {
+    constexpr const T* Data() const noexcept Y_LIFETIME_BOUND {
         return std::addressof(this->Data_);
     }
 
-    constexpr T* Data() noexcept {
+    constexpr T* Data() noexcept Y_LIFETIME_BOUND {
         return std::addressof(this->Data_);
     }