Почему в STL
std::iterator_traits<const T*>::value_type
- это тот же тип, что и
std::iterator_traits<T*>::value_type
Почему он так устроен? Не должен ли первый быть const T, а второй - только T? Как вы должны взять базовый const правильный тип итератора? Я знаю, что вы можете написать свой собственный класс шаблонов и специализацию и получить его от
std::iterator_traits<const T*>::pointer
но не должно быть члена typedef, который его удерживает?