Small-K 2020-09-01 19:45 采纳率: 0%
浏览 93

C++中iterator_traits为什么会报这个错误(非类型视为类型)?

图片说明

代码说明:想通过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());
}

在此先谢谢各位了!

  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2020-09-02 09:40
    关注
    评论

报告相同问题?