[webkit-changes] [WebKit/WebKit] 23402d: Use std::variant and std::optional as storage for ...

Alex Christensen noreply at github.com
Wed Jan 24 00:25:27 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 23402d69a57f55e6a557868d128bc4a6b5c75068
      https://github.com/WebKit/WebKit/commit/23402d69a57f55e6a557868d128bc4a6b5c75068
  Author: Alex Christensen <achristensen at apple.com>
  Date:   2024-01-24 (Wed, 24 Jan 2024)

  Changed paths:
    M Source/WTF/wtf/Expected.h
    M Source/WebKit/Platform/IPC/Connection.h

  Log Message:
  -----------
  Use std::variant and std::optional as storage for WTF::Expected
https://bugs.webkit.org/show_bug.cgi?id=267956
rdar://121471408

Reviewed by Fujii Hironori.

Our Expected interface is 7 paper revisions behind https://wg21.link/P0323R11
It has all kinds of issues with trivially copyable and trivially destructable types
that have been solved since https://wg21.link/P0323R4 and it's in C++23 which we
can't use for another few months.  Until then, just use std::optional and std::variant
as the storage, where these problems have also already been solved.

* Source/WTF/wtf/Expected.h:
(std::experimental::fundamentals_v3::__expected_detail::base::base):
(std::experimental::fundamentals_v3::__expected_detail::voidbase::voidbase):
(std::experimental::fundamentals_v3::expected::expected):
(std::experimental::fundamentals_v3::expected::swap):
(std::experimental::fundamentals_v3::expected::operator-> const):
(std::experimental::fundamentals_v3::expected::operator->):
(std::experimental::fundamentals_v3::expected::operator* const):
(std::experimental::fundamentals_v3::expected::operator*):
(std::experimental::fundamentals_v3::expected::operator bool const):
(std::experimental::fundamentals_v3::expected::has_value const):
(std::experimental::fundamentals_v3::expected::value const):
(std::experimental::fundamentals_v3::expected::value):
(std::experimental::fundamentals_v3::expected::error const):
(std::experimental::fundamentals_v3::expected::error):
(std::experimental::fundamentals_v3::expected::value_or const):
(std::experimental::fundamentals_v3::expected::value_or):
(std::experimental::fundamentals_v3::__expected_detail::destroy): Deleted.
(std::experimental::fundamentals_v3::__expected_detail::std::is_trivially_destructible<T>::value): Deleted.
(std::experimental::fundamentals_v3::__expected_detail::constexpr_base::constexpr_base): Deleted.
(std::experimental::fundamentals_v3::__expected_detail::base::~base): Deleted.
* Source/WebKit/Platform/IPC/Connection.h:

Canonical link: https://commits.webkit.org/273395@main




More information about the webkit-changes mailing list