- 论坛徽章:
- 0
|
本帖最后由 Frahm 于 2013-04-20 00:56 编辑
- template<typename Iterator>
- struct iterator_traits {
- typedef Iterator iterator;
- typedef typename Iterator::iterator_category iterator_category;
- typedef typename Iterator::value_type value_type;
- typedef typename Iterator::difference_type difference_type;
- typedef typename Iterator::pointer pointer;
- typedef typename Iterator::reference reference;
- //other non-standard traits
- };
- //这样特化不行,说是不能推导出类型或者有未使用参数
- template<typename T, typename Alloc>
- struct iterator_traits<typename std::vector<T, Alloc>::iterator> {
- typedef typename std::vector<T, Alloc>::iterator iterator;
- typedef typename iterator::iterator_category iterator_category;
- typedef typename iterator::value_type value_type;
- typedef typename iterator::difference difference_type;
- typedef typename iterator::pointer pointer;
- typedef typename iterator::reference reference;
- //...other non-standard traits
- };
复制代码 我想把iterator_traits根据stl中的容器来特化,比如std::vector, 该怎么做呢? |
|