反復子は皆iterator_categoryやvalue_typeとかのpublicなデータ型を持っているのに、
iterator_traitsというクラスがあり、わざわざそれを通してそれらのデータ型にアクセスするのは、
イテレータがポインタやconstなポインタ型だった場合も同じように扱えるようにするため
っていう認識で正しいのでしょうか。
それ以外にも理由があるのでしょうか。