Como especializar o Iterator por seu tipo de valor, em C +

É possível especializar um parâmetro de modelo Iterator por seuvalue_type?

Tenho uma função com o seguinte protótipo.

template<typename InputIterator>
void f(InputIterator first, InputIterator last);

E eu quero lidar especialmente seInputIterator::value_type éSomeSpecificType.

questionAnswers(5)

yourAnswerToTheQuestion