- typedef typename _Ty::iterator::iterator_category iterator_category;
- typedef typename _Ty::iterator::value_type value_type;
- typedef typename _Ty::iterator::reference reference;
- typedef typename _Ty::iterator::pointer pointer;
- typedef typename _Ty::const_iterator::reference const_reference;
- typedef typename _Ty::const_iterator::pointer const_pointer;
- typedef typename _Ty::iterator::difference_type difference_type;
+ typedef typename std::iterator_traits<typename _Ty::iterator>::iterator_category iterator_category;
+ typedef typename std::iterator_traits<typename _Ty::iterator>::value_type value_type;
+ typedef typename std::iterator_traits<typename _Ty::iterator>::difference_type difference_type;
+ typedef typename std::iterator_traits<typename _Ty::iterator>::pointer pointer;
+ typedef typename std::iterator_traits<typename _Ty::iterator>::reference reference;
+ typedef typename _Ty::const_reference const_reference;
+ typedef typename _Ty::const_pointer const_pointer;