- fd5f3d7077270ffc5ea74cdb9e18bbae3b9b46aa Fix typo optional -> variant by Abseil Team <absl-team@google.com>
- 9136c06dfa8dbfdde0a427ad3509e34763d607a6 Fix string_view_test and str_cat_test build under MSVC de... by Derek Mauro <dmauro@google.com> - a463820f9441888f4368aa87328599e3209f9b07 Removes constexpr optional<T>::operator->(). This was don... by Abseil Team <absl-team@google.com> - 3bf78a7f126daafff329f7815d507422f1ca378d Remove dependencies on external CCTZ project. by Shaindel Schwartz <shaindel@google.com> - a4ae574a11b1ddf6e88459af3d638cf79aea7ecd Internal change by Jon Cohen <cohenjon@google.com> GitOrigin-RevId: fd5f3d7077270ffc5ea74cdb9e18bbae3b9b46aa Change-Id: I6ab8ab99863716fe9b2745a12ef285f7a6da6d1e
This commit is contained in:
parent
94ce52d46c
commit
af7882601a
638 changed files with 9262 additions and 58 deletions
|
|
@ -774,7 +774,9 @@ class optional : private optional_internal::optional_data<T>,
|
|||
//
|
||||
// Accesses the underlying `T` value's member `m` of an `optional`. If the
|
||||
// `optional` is empty, behavior is undefined.
|
||||
constexpr const T* operator->() const { return this->pointer(); }
|
||||
//
|
||||
// If you need myOpt->foo in constexpr, use (*myOpt).foo instead.
|
||||
const T* operator->() const { return this->pointer(); }
|
||||
T* operator->() {
|
||||
assert(this->engaged_);
|
||||
return this->pointer();
|
||||
|
|
@ -870,12 +872,12 @@ class optional : private optional_internal::optional_data<T>,
|
|||
|
||||
private:
|
||||
// Private accessors for internal storage viewed as pointer to T.
|
||||
constexpr const T* pointer() const { return &this->data_; }
|
||||
T* pointer() { return &this->data_; }
|
||||
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->pointer(); }
|
||||
T& reference() { return *(this->pointer()); }
|
||||
constexpr const T& reference() const { return this->data_; }
|
||||
T& reference() { return this->data_; }
|
||||
|
||||
// T constraint checks. You can't have an optional of nullopt_t, in_place_t
|
||||
// or a reference.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue