adapting c++20 ranges algorithms for most metaprogramming

1 · Jia Yuehua · Jan. 22, 2024, midnight
daisy在cppnow 2023的演讲中展示了可极大简化模板元算法的技巧。 以排序为例 基本思路是 将type_list中的每个Type映射到他们的index, 然后对index数组做sort,结果为sorted_indices, 最终type_list中各个元素按照在sorted_indices新位置重新安放,返回结果type_list. #include <type_traits> #include <ranges> #include <array> #include <algorithm> template <class...> struct type_list {}; template <class List, auto Key> struct Sort {}; template<size_t N, class ... Ts> using at_t = std::tuple_element_t<N, std::tuple<Ts...>>; template<class ... Ts, auto Key> struct Sort<type_list<Ts...>, Key...