diff --git a/include/continuable/detail/composition-all.hpp b/include/continuable/detail/composition-all.hpp index cd4c232..b6ef905 100644 --- a/include/continuable/detail/composition-all.hpp +++ b/include/continuable/detail/composition-all.hpp @@ -50,23 +50,27 @@ namespace detail { namespace composition { namespace all { struct all_hint_deducer { - static constexpr auto deduce(hints::signature_hint_tag<>) noexcept - -> decltype(spread_this()); + static constexpr auto deduce(hints::signature_hint_tag<>) noexcept { + return spread_this(); + } template - static constexpr auto deduce(hints::signature_hint_tag) -> First; + static constexpr auto deduce(hints::signature_hint_tag) { + return First{}; + } template static constexpr auto - deduce(hints::signature_hint_tag) - -> decltype(spread_this(std::declval(), std::declval(), - std::declval()...)); + deduce(hints::signature_hint_tag) { + return spread_this(First{}, Second{}, Args{}...); + } template < typename T, std::enable_if_t>::value>* = nullptr> - auto operator()(T&& /*continuable*/) const - -> decltype(deduce(hints::hint_of(traits::identify{}))); + auto operator()(T&& /*continuable*/) const { + return deduce(hints::hint_of(traits::identify{})); + } }; constexpr auto deduce_from_pack(traits::identity)