23class AwaitableToken
final {
28 AwaitableToken(
const AwaitableToken&)
noexcept =
default;
29 AwaitableToken(AwaitableToken&&)
noexcept =
default;
30 AwaitableToken& operator=(
const AwaitableToken&)
noexcept =
default;
31 AwaitableToken& operator=(AwaitableToken&&)
noexcept =
default;
32 ~AwaitableToken() =
default;
35 [[nodiscard]]
constexpr bool IsEmpty()
const noexcept {
return awaitable_ ==
nullptr; }
38 [[nodiscard]]
constexpr bool operator==(
const AwaitableToken& other)
const noexcept {
39 return awaitable_ == other.awaitable_;
44 constexpr AwaitableToken(
utils::impl::InternalTag,
impl::AwaitableBase* awaitable)
noexcept : awaitable_(awaitable) {}
47 [[nodiscard]]
impl::AwaitableBase& GetAwaitable(
utils::impl::InternalTag)
const noexcept {
54 impl::AwaitableBase* awaitable_{
nullptr};