
On 3/20/2015 11:44 AM, Louis Dionne wrote:
As a simple curiosity, here's how this could be implemented with Hana: <snip>
And using Meta: #include <tuple> #include <meta/meta.hpp> using namespace meta; namespace l = lazy; template<typename List> using indexed_sort_ = sort<zip< list<List,as_list<make_index_sequence<List::size()>>>>, lambda<_a,_b,l::less<l::sizeof_<l::first<_a>>, l::sizeof_<l::first<_b>>>>>; template<typename List> using indexed_sort = pair<transform<indexed_sort_<List>,quote<first>>, transform<indexed_sort_<List>,quote<second>>>; int main() { using P = indexed_sort<list<char[4],char[2],char[1],char[5],char[3]>>; using Tup = apply_list<quote<std::tuple>, first<P>>; using Idx = second<P>; // list<int_<2>,int_<1>,int_<4>,int_<0>,int_<3>> Tup tup; // std::tuple<char[1],char[2],...char[5]> char(&a)[3] = std::get<at_c<Idx, 0>::value>(tup); char(&b)[2] = std::get<at_c<Idx, 1>::value>(tup); char(&c)[5] = std::get<at_c<Idx, 2>::value>(tup); } FWIW, these indices don't seem all that useful to me. What exactly was the desired behavior? -- Eric Niebler Boost.org http://www.boost.org