как совместить шаблонов частичная специализация шаблона вычет аргумент

мое понимание заключается в том, что аргумент шаблона вычет только на шаблоны функций, шаблоны функций, но и не допускает частичной специализации. есть ли способ, чтобы достичь обоих?

я в принципе хочу добиться функция-объект (может быть функтором) с подписью

template<class inputiterator1, class inputiterator2, class outputiterator, int distribution>void getquantity(inputiterator1 frist1, inputiterator1 last1, inputiterator2 first2, outputiterator result, double supply, double limit);

в зависимости от стоимости рассылки, я хочу иметь пару специализации этого шаблона.и когда я называю эту функцию,я в принципе не хочу, чтобы указать все параметры типа, потому что они многие из них (и, следовательно, мне нужно вычет аргументом)!