In this STL design, iterator_traits changes from being a class template to being an alias template. This is to intentionally break any code that tries to specialize it. In its place are the three class templates difference_type, value_type, and iterator_category. The need for this traits balkanization is because the associated types belong to separate concepts: difference_type belongs to WeaklyIncrementable; value_type belongs to Readable; and iterator_category belongs to InputIterator.
This breakage is intentional and inherent in the decomposition of the iterator concepts established by the Palo Alto report (palo-alto).