diff --git a/proxy.h b/proxy.h index 12246fc..6167040 100644 --- a/proxy.h +++ b/proxy.h @@ -598,46 +598,37 @@ struct overloads_matching_traits, std::tuple> template concept matches_overloads = overloads_matching_traits::applicable; -template struct flattening_traits_impl; -template -struct flattening_traits_impl, T> { using type = T; }; -template -struct flattening_traits_impl, U> - : flattening_traits_impl, U> {}; -template - requires(!contains_traits::applicable) -struct flattening_traits_impl, std::tuple> - : flattening_traits_impl, std::tuple> {}; -template struct flattening_traits { using type = std::tuple; }; -template <> -struct flattening_traits> { using type = std::tuple<>; }; -template -struct flattening_traits> : flattening_traits_impl< - typename flattening_traits::type, - typename flattening_traits>::type> {}; - -template -struct overloads_combination_traits { using type = std::tuple<>; }; -template -struct overloads_combination_traits - : overloads_combination_traits {}; -template - requires(requires { typename D::overload_types; }) -struct overloads_combination_traits - : flattening_traits::type>> {}; +template struct final_reduction { using type = T; }; +template