35class [[nodiscard]] SharedTaskWithResult :
public SharedTask {
40 SharedTaskWithResult() =
default;
44 ~SharedTaskWithResult() =
default;
47 SharedTaskWithResult(
const SharedTaskWithResult& other) =
default;
54 SharedTaskWithResult& operator=(
const SharedTaskWithResult& other) =
default;
58 SharedTaskWithResult(SharedTaskWithResult&& other)
noexcept =
default;
65 SharedTaskWithResult& operator=(SharedTaskWithResult&& other)
noexcept =
default;
75 decltype(
auto) Get()
const&
noexcept(
false) {
83 return utils::
impl::CastWrappedCall<T>(GetPayload()).Get();
86 std::add_lvalue_reference<
const T> Get() && {
87 static_assert(!
sizeof(T*),
"Store SharedTaskWithResult before using");
94 explicit SharedTaskWithResult(impl::TaskContextHolder&& context)