diff --git a/research/try.cpp b/research/try.cpp index 29ed4d5ca..5b1387ae2 100644 --- a/research/try.cpp +++ b/research/try.cpp @@ -102,6 +102,8 @@ struct Pick { return Pick::get (args...); } + + static auto get() { return nullptr; } }; template<> @@ -113,18 +115,22 @@ struct Pick<0> { return a; } + + static auto get() { return nullptr; } }; + using Arr = std::array; -template -void -dispatch_ (IndexSeq, ARGS...args) +template +Arr +dispatch_ (IndexSeq,IndexSeq, ARGS...args) { - - fun2 (Pick::get(args...) ...); + Arr arr{Pick::get(args...) ...}; + fun2 (Pick::get(args...) ...); + return arr; } template @@ -136,10 +142,7 @@ dispatch (ARGS...args) using First = typename BuildIndexSeq<3>::Ascending; using Next = typename BuildIndexSeq<3>::OffsetBy<3>; - dispatch_ (First(), args...); - dispatch_ (Next(), args...); - Arr arr{9,8,7}; - return arr; + return dispatch_ (First(),Next(), args...); }