12template <
typename V,
typename E>
21#if YACLIB_SYMMETRIC_TRANSFER != 0
28 auto result = (this->
GetRef() == 1) ? std::move(this->
Get()) : std::as_const(this->
Get());
34 return BaseCore::SetCallbackImpl<true>(
callback);
41 template <
bool SymmetricTransfer>
43 return BaseCore::SetInlineImpl<SymmetricTransfer, true>(
callback);
46 template <
bool SymmetricTransfer>
48 return BaseCore::SetResultImpl<SymmetricTransfer, true>();
54template <
typename V,
typename E>
virtual void DecRef() noexcept
Decrements reference counter.
virtual std::size_t GetRef() noexcept
A intrusive pointer to objects with an embedded reference count.
Encapsulated return value from caller.
Result< V, E > & Get() noexcept
Result< V, E > Retire() final
InlineCore * Here(InlineCore &caller) noexcept override
Transfer< SymmetricTransfer > SetResult() noexcept
bool SetCallback(InlineCore &callback) noexcept
Transfer< SymmetricTransfer > SetInline(InlineCore &callback) noexcept
constexpr std::size_t kSharedRefNoFuture
constexpr std::size_t kSharedRefWithFuture
Contract< V, E > MakeContract()
Creates related future and promise.