OSDN Git Service

Lazy<T> class: Destroy the wrapped T object when the Lazy<T> instance gets destroyed.
authorLoRd_MuldeR <mulder2@gmx.de>
Sat, 14 Apr 2018 23:27:07 +0000 (01:27 +0200)
committerLoRd_MuldeR <mulder2@gmx.de>
Sat, 14 Apr 2018 23:27:07 +0000 (01:27 +0200)
include/MUtils/Lazy.h

index 3f6eb10..e5fb12d 100644 (file)
@@ -69,6 +69,14 @@ namespace MUtils
                        return *m_value;
                }
 
+               ~Lazy(void)
+               {
+                       if(T *const value = m_value.fetchAndStoreOrdered(NULL))
+                       {
+                               delete value;
+                       }
+               }
+
        private:
                QAtomicPointer<T> m_value;
                const std::function<T*(void)> m_initializer;