| Index: third_party/WebKit/Source/wtf/Optional.h
|
| diff --git a/third_party/WebKit/Source/wtf/Optional.h b/third_party/WebKit/Source/wtf/Optional.h
|
| index 264b45ed616936fddd1284997a7c3ff21520e711..a052b01a789c38f5def0a8c7c250e6b1783b3fcc 100644
|
| --- a/third_party/WebKit/Source/wtf/Optional.h
|
| +++ b/third_party/WebKit/Source/wtf/Optional.h
|
| @@ -30,38 +30,50 @@ namespace WTF {
|
|
|
| template <typename T>
|
| class Optional {
|
| - WTF_MAKE_NONCOPYABLE(Optional);
|
| -public:
|
| - Optional() : m_ptr(nullptr) { }
|
| - ~Optional()
|
| - {
|
| - if (m_ptr)
|
| - m_ptr->~T();
|
| - }
|
| + WTF_MAKE_NONCOPYABLE(Optional);
|
|
|
| - typedef T* Optional::*UnspecifiedBoolType;
|
| - operator UnspecifiedBoolType() const { return m_ptr ? &Optional::m_ptr : nullptr; }
|
| + public:
|
| + Optional()
|
| + : m_ptr(nullptr) {}
|
| + ~Optional() {
|
| + if (m_ptr)
|
| + m_ptr->~T();
|
| + }
|
|
|
| - T& operator*() { ASSERT_WITH_SECURITY_IMPLICATION(m_ptr); return *m_ptr; }
|
| - const T& operator*() const { ASSERT_WITH_SECURITY_IMPLICATION(m_ptr); return *m_ptr; }
|
| - T* operator->() { ASSERT_WITH_SECURITY_IMPLICATION(m_ptr); return m_ptr; }
|
| - const T* operator->() const { ASSERT_WITH_SECURITY_IMPLICATION(m_ptr); return m_ptr; }
|
| + typedef T* Optional::*UnspecifiedBoolType;
|
| + operator UnspecifiedBoolType() const { return m_ptr ? &Optional::m_ptr : nullptr; }
|
|
|
| - template <typename... Args>
|
| - void emplace(Args&&... args)
|
| - {
|
| - RELEASE_ASSERT(!m_ptr);
|
| - m_ptr = reinterpret_cast_ptr<T*>(&m_storage.buffer);
|
| - new (m_ptr) T(forward<Args>(args)...);
|
| - }
|
| + T& operator*() {
|
| + ASSERT_WITH_SECURITY_IMPLICATION(m_ptr);
|
| + return *m_ptr;
|
| + }
|
| + const T& operator*() const {
|
| + ASSERT_WITH_SECURITY_IMPLICATION(m_ptr);
|
| + return *m_ptr;
|
| + }
|
| + T* operator->() {
|
| + ASSERT_WITH_SECURITY_IMPLICATION(m_ptr);
|
| + return m_ptr;
|
| + }
|
| + const T* operator->() const {
|
| + ASSERT_WITH_SECURITY_IMPLICATION(m_ptr);
|
| + return m_ptr;
|
| + }
|
|
|
| -private:
|
| - T* m_ptr;
|
| - AlignedBuffer<sizeof(T), WTF_ALIGN_OF(T)> m_storage;
|
| + template <typename... Args>
|
| + void emplace(Args&&... args) {
|
| + RELEASE_ASSERT(!m_ptr);
|
| + m_ptr = reinterpret_cast_ptr<T*>(&m_storage.buffer);
|
| + new (m_ptr) T(forward<Args>(args)...);
|
| + }
|
| +
|
| + private:
|
| + T* m_ptr;
|
| + AlignedBuffer<sizeof(T), WTF_ALIGN_OF(T)> m_storage;
|
| };
|
|
|
| -} // namespace WTF
|
| +} // namespace WTF
|
|
|
| using WTF::Optional;
|
|
|
| -#endif // Optional_h
|
| +#endif // Optional_h
|
|
|