From 5637ebe60dd2403062f445ce089c598fddb17343 Mon Sep 17 00:00:00 2001 From: Denis Blank Date: Thu, 2 Jul 2015 00:54:24 +0200 Subject: [PATCH] save --- include/Continuable.h | 35 +++++++++++++++++++++++++++++------ test.cpp | 8 ++++++++ 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/include/Continuable.h b/include/Continuable.h index 5d608d5..4771ddf 100644 --- a/include/Continuable.h +++ b/include/Continuable.h @@ -294,6 +294,10 @@ namespace detail typedef fu::argument_type_of_t callback_arguments_t; }; + /// Helper trait for multiple chains like `Continuable::all` + template + struct multiple_when_all_chainer_t; + template struct concat_identities; @@ -312,12 +316,6 @@ namespace detail typedef std::tuple type; }; - template - struct multiple_chainer_test - { - - }; - template struct void_wrap_trait; @@ -482,6 +480,31 @@ namespace detail using result_maker_of_t = multiple_result_maker<0, fu::identity<>, fu::identity<>, Args...>; }; + + + + template + struct multiple_when_all_chainer_t, fu::identity<_CTy...>> + { + struct helper + { + }; + + typedef typename functional_traits<_ATy...>::result_maker_of_t<_CTy...> result_maker; + + typedef typename result_maker::arguments_t arguments_t; + + typedef typename result_maker::partial_results_t partial_results_t; + + static std::size_t const size = result_maker::size; + + // Creates one continuable from multiple ones + static auto make_when_all() + -> int + { + return 1; + } + }; } #endif // _CONTINUABLE_H_ diff --git a/test.cpp b/test.cpp index 1482efa..d7eda20 100644 --- a/test.cpp +++ b/test.cpp @@ -337,6 +337,14 @@ int main(int /*argc*/, char** /*argv*/) fu::sequence_generator<2>::type seqtype; fu::sequence_generator<1>::type zero_seqtype; + detail::multiple_when_all_chainer_t< + fu::identity<>, + fu::identity< + std::function()>, + std::function()> + > + >::result_maker::partial_results_t myres123345; + std::cout << "ok" << std::endl; return 0; }