diff --git a/include/Continuable.h b/include/Continuable.h index c4473aa..e72ed67 100644 --- a/include/Continuable.h +++ b/include/Continuable.h @@ -217,7 +217,7 @@ public: /* /// Validates the Continuable - inline Continuable& Validate() + inline Continuable Validate() { _released = false; return *this; @@ -501,6 +501,8 @@ namespace detail typedef std::function return_t; + typedef functional_traits<_ATy...> traits_t; + struct ResultStorage { ResultStorage(std::size_t count_) @@ -525,9 +527,15 @@ namespace detail template inline static void invoke(shared_result_t storage, Arguments&& args, _CTy&& current) { - auto&& corrected = functional_traits<_ATy...>::correct(std::forward<_CTy>(current)); + auto ret = + fu::invoke_from_tuple( + traits_t::correct(std::forward<_CTy>(current)), + std::forward(args) + ); - std::cout << "invoking: " << Position << " " << typeid(corrected).name() << std::endl; + // TODO invalidate tuple + + std::cout << "invoking: " << Position << " " << typeid(ret).name() << std::endl; } /// Invoke and pass recursive to itself diff --git a/test.cpp b/test.cpp index 6f2fff3..74d568e 100644 --- a/test.cpp +++ b/test.cpp @@ -374,8 +374,6 @@ int main(int /*argc*/, char** /*argv*/) > >::result_maker::partial_results_t myres123345; - - /* auto firstType = detail::multiple_when_all_chainer_t< fu::identity<>,