代码说明:想通过iterator_traits来根据迭代器的类型选择不同的重载函数。报错的行是函数返回值,想根据iterator_traits中的difference_type来自动获取迭代器的类型作为返回值。
但是报了非类型视作类型的错误
template<class RandomAccessIterator>
inline iterator_traits<RandomAccessIterator>::difference_type
__distance(RandomAccessIterator first, RandomAccessIterator, random_access_iterator_tag)
{
cout << "random_access_iterator_tag";
}
template<class BidirectionIterator>
inline iterator_traits<BidirectionIterator>::difference_type
__distance(BidirectionIterator first, BidirectionIterator, bidirectional_iterator_tag)
{
cout << "bidirectional_iterator_tag";
}
template<class iterator>
inline iterator_traits<iterator>::difference_type
distance(iterator first, iterator second)
{
iterator_trait<iterator>::iterator_category category;
__distance(first, second, category());
}
在此先谢谢各位了!