微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在C ++中,std :: move_iterator <Iterator> :: pointer与迭代器不同吗?

如何解决在C ++中,std :: move_iterator <Iterator> :: pointer与迭代器不同吗?

#include <stdio.h>
#include <iterator>
#include <vector>

template< typename Iterator>
int test_it(){
    int rv;
  
    rv= std::is_same<
    Iterator,typename std::move_iterator<Iterator>::pointer
    >::value;
    
   printf("point rv = %d\n",rv);
   return rv;
}

int main(int argc,char **argv)
{
    std::vector<int> v(5,0);
    
    test_it< decltype(v)::iterator > ();
    
    return 0;
}

使用llvm c ++库的旧版本,我得到了

point rv=0  

我的问题是:rv是否应为1? 因为std :: move_iterator :: pointer是迭代器。

感谢分享您的想法。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。