about summary refs log tree commit diff
path: root/absl/types/optional.h
diff options
context:
space:
mode:
authorAbseil Team <absl-team@google.com>2018-08-28T08·05-0700
committerjueminyang <jueminyang@google.com>2018-08-28T15·08-0400
commitd6df769173bf0263489f98874b93034db0e479a2 (patch)
tree82b98e1d22f271165827b7c984cafe56dd11eab5 /absl/types/optional.h
parent28080f5f050c9530aa9f2b39c60d8217038d64ff (diff)
Export of internal Abseil changes.
--
de82143f509d8fd6e70efc9eaed35582054a7443 by Abseil Team <absl-team@google.com>:

Mark optional::reset() with the ABSL_ATTRIBUTE_REINITIALIZES attribute.

This prevents false positives in the clang-tidy check bugprone-use-after-move; it allows reset() to be called on a moved-from optional without any warnings, and the optional will thereafter be regarded as initialized again.

PiperOrigin-RevId: 210502364

--
e645e68c44df957271e109aca6d68af530e27d04 by Derek Mauro <dmauro@google.com>:

Mark //absl/synchronization:thread_pool as only visible to internal
Abseil targets since it is internal-only.

PiperOrigin-RevId: 210406260

--
09b53240efba9bf73190eaea91fe33b9eafc3529 by Abseil Team <absl-team@google.com>:

Add support for the [[clang::reinitializes]] attribute.

This will be used to prevent false positives in the clang-tidy check
bugprone-use-after-move.

PiperOrigin-RevId: 210377317
GitOrigin-RevId: de82143f509d8fd6e70efc9eaed35582054a7443
Change-Id: Ibac1ee694f7b5b9f5aff8670559e49505ff8ee11
Diffstat (limited to 'absl/types/optional.h')
-rw-r--r--absl/types/optional.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/absl/types/optional.h b/absl/types/optional.h
index 79475e3ea3b3..14210018815c 100644
--- a/absl/types/optional.h
+++ b/absl/types/optional.h
@@ -59,6 +59,7 @@ using std::nullopt;
 #include <type_traits>
 #include <utility>
 
+#include "absl/base/attributes.h"
 #include "absl/memory/memory.h"
 #include "absl/meta/type_traits.h"
 #include "absl/types/bad_optional_access.h"
@@ -700,7 +701,7 @@ class optional : private optional_internal::optional_data<T>,
   // optional::reset()
   //
   // Destroys the inner `T` value of an `absl::optional` if one is present.
-  void reset() noexcept { this->destruct(); }
+  ABSL_ATTRIBUTE_REINITIALIZES void reset() noexcept { this->destruct(); }
 
   // optional::emplace()
   //