#pragma once #include #include "unit_schema.hpp" namespace saw { namespace impl { template class unit_matching; template class unit_redux_list { static_assert(sizeof...(T) == 0u, "Template type not supported"); using reduced_type = unit_redux_list<>; }; template class unit_matching { static_assert(is_always_false, "Template type not supported"); }; template class unit_matching, unit_redux_list> { using Type = unit_redux_list; }; template class unit_matching, unit_redux_list> { using Type = }; } template struct unit_element_reduction { using Schema = typename impl::unit_matching, impl::unit_redux_list<>>::Schema; }; template struct unit_multiplication { static_assert(is_always_false, "Template type not supported"); }; template class unit_multiplication< schema::Unit...>,schema::Unit...> > { using Schema = typename unit_reduction..., schema::UnitElement...>::Schema; }; }