diff --git a/include/continuable/detail/composition-all.hpp b/include/continuable/detail/composition-all.hpp index 2dc0333..65f2d8a 100644 --- a/include/continuable/detail/composition-all.hpp +++ b/include/continuable/detail/composition-all.hpp @@ -85,10 +85,15 @@ constexpr auto deduce_from_pack(traits::identity) // We must guard the mapped type against to be void since this represents an // empty signature hint. template -constexpr auto deduce_hint(Composition && /*composition*/) - -> decltype(deduce_from_pack( - traits::identity()))>{})){}; +constexpr auto deduce_hint(Composition&& /*composition*/) { + // Don't change this way since it addresses a GCC compiler bug: + // error: extra ';' [-Werror=pedantic] + // std::declval()))>{})){}; + using mapped_t = + decltype(map_pack(all_hint_deducer{}, std::declval())); + using deduced_t = decltype(deduce_from_pack(traits::identity{})); + return deduced_t{}; +} /// Caches the partial results and invokes the callback when all results /// are arrived. This class is thread safe.