diff --git a/include/continuable/continuable-base.hpp b/include/continuable/continuable-base.hpp index d02a4ea..7ab563a 100644 --- a/include/continuable/continuable-base.hpp +++ b/include/continuable/continuable-base.hpp @@ -197,7 +197,7 @@ constexpr auto get(identity) noexcept { } /// Helper to trick compilers about that a parameter pack is used -template constexpr void unused(T&&... args) { +template void unused(T&&... args) { auto use = [](auto&& type) mutable { (void)type; return 0; @@ -630,10 +630,6 @@ public: return *this; } - ownership operator&&(ownership right) const noexcept { - return ownership(has_ownership() && right.has_ownership()); - } - constexpr bool has_ownership() const noexcept { return is_owning; } void invalidate() noexcept { is_owning = false; } @@ -907,10 +903,9 @@ void invoke_proxy(signature_hint_tag, Continuation&& continuation, template constexpr auto next_hint_of(util::identity /*callback*/, signature_hint_tag /*current*/) { - auto result = - util::identity_of()(std::declval()...))>(); - - return decoration::invokerOf(result).hint(); + return decoration::invokerOf(util::identity_of()( + std::declval()...))>()) + .hint(); } /// Chains a callback together with a continuation and returns a continuation: @@ -1289,12 +1284,12 @@ constexpr auto common_result_of(Signature signature, signature_hint_tag<>, template constexpr auto common_result_of(Signature signature, First first, Args... args) { - auto common = + using Common = util::identity>{}; + decltype(first_of(args))...>>; - return common_result_of(util::push(signature, common), util::pop_first(first), - util::pop_first(args)...); + return common_result_of(util::push(signature, Common{}), + util::pop_first(first), util::pop_first(args)...); } /// Finalizes the any logic of a given composition