У меня есть шаблон struct, который принимает тип Iterator для аргумента шаблона. Теперь мне нужно специализировать этот класс для итераторов разных контейнеров. Я попытался с станд :: векторчастичная специализация для типа итератора указанного типа контейнера
template<typename Iterator>
struct AC {
};
template<typename T, typename Alloc>
struct AC<typename std::vector<T, Alloc>::iterator> { //this doesn't work
};
, но я получил эту ошибку компилятора (VS11): «T»: шаблонный параметр не используется или выводимые в частичной специализации
Может кто-то пожалуйста, скажите мне, почему это не работает? И как заставить его работать?
Почему вы хотите специализироваться на итераторах разных контейнеров? Специализируясь на векторе, итератор, вероятно, не будет использоваться, поскольку это может быть просто T *. Вы пытаетесь увидеть, поддерживает ли в итераторе произвольный доступ, в этом случае вы хотите, чтобы iterator_traits :: iterator_category –
@JohnBandela: Я хочу расходовать категорию итератора, написать свой собственный iterator_traits и сделать его совместимым с stl-контейнерами – Frahm