From dd9911a004edcc34152850a6216bb3b53ad6bb82 Mon Sep 17 00:00:00 2001
From: Abseil Team <absl-team@google.com>
Date: Fri, 11 May 2018 05:42:49 -0700
Subject: [PATCH]   - da802ce3de569d5af0bfc5888c8a0d823548b544 Removes private
 method pointer() from optional and adds a... by Abseil Team
 <absl-team@google.com>

GitOrigin-RevId: da802ce3de569d5af0bfc5888c8a0d823548b544
Change-Id: Ic9c0a0771c90a5484b459655c8b25b36ffd8c3f0
---
 absl/types/optional.h | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/absl/types/optional.h b/absl/types/optional.h
index 4dcf4796..42068cca 100644
--- a/absl/types/optional.h
+++ b/absl/types/optional.h
@@ -776,10 +776,13 @@ class optional : private optional_internal::optional_data<T>,
   // `optional` is empty, behavior is undefined.
   //
   // If you need myOpt->foo in constexpr, use (*myOpt).foo instead.
-  const T* operator->() const { return this->pointer(); }
+  const T* operator->() const {
+    assert(this->engaged_);
+    return std::addressof(this->data_);
+  }
   T* operator->() {
     assert(this->engaged_);
-    return this->pointer();
+    return std::addressof(this->data_);
   }
 
   // optional::operator*()
@@ -871,10 +874,6 @@ class optional : private optional_internal::optional_data<T>,
   }
 
  private:
-  // Private accessors for internal storage viewed as pointer to T.
-  const T* pointer() const { return std::addressof(this->data_); }
-  T* pointer() { return std::addressof(this->data_); }
-
   // Private accessors for internal storage viewed as reference to T.
   constexpr const T& reference() const { return this->data_; }
   T& reference() { return this->data_; }