fixed bug in util::optional::reset(); forgot to set is_full to false
authorJacob Lifshay <programmerjake@gmail.com>
Thu, 20 Jul 2017 08:11:03 +0000 (01:11 -0700)
committerJacob Lifshay <programmerjake@gmail.com>
Thu, 20 Jul 2017 08:11:03 +0000 (01:11 -0700)
src/util/optional.h

index 99b748d494876cbfeede1d7e5f89d7d0e24f6398..c11ba78fa37fb85f2e417ef5ddbda21cbd69d201 100644 (file)
@@ -80,6 +80,7 @@ struct Optional_base
     {
         if(is_full)
             full_value.~T();
+        is_full = false;
     }
     template <typename... Types>
     T &emplace(Types &&... args) noexcept(std::is_nothrow_constructible<T, Types...>::value)
@@ -179,6 +180,7 @@ struct Optional_base<T, true, false>
     void reset() noexcept
     {
         // full_value.~T() not needed
+        is_full = false;
     }
     template <typename... Types>
     T &emplace(Types &&... args) noexcept(std::is_nothrow_constructible<T, Types...>::value)
@@ -275,6 +277,7 @@ struct Optional_base<T, true, true>
     void reset() noexcept
     {
         // full_value.~T() not needed
+        is_full = false;
     }
     template <typename... Types>
     T &emplace(Types &&... args) noexcept(std::is_nothrow_constructible<T, Types...>::value)