首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么"std::begin()“在这种情况下总是返回"const_iterator”?

为什么"std::begin()“在这种情况下总是返回"const_iterator”?
EN

Stack Overflow用户
提问于 2017-03-03 21:55:03
回答 2查看 2.2K关注 0票数 18
代码语言:javascript
运行
复制
#include <vector>
#include <iostream>

using namespace std;

int main()
{
    vector<int> coll;

    decltype(std::begin(std::declval<vector<int>>()))
        pos_1 = coll.begin();
    auto pos_2 = coll.begin();

    cout << typeid(decltype(pos_1)).name() << endl;
    cout << typeid(decltype(pos_2)).name() << endl;
}

我的编译器是clang 4.0。输出为:

class std::_Vector_const_iterator> class std::_Vector_iterator>

这意味着:pos_1 = pos_2;是ok的,而pos_2 = pos_1;是不ok的。

在这种情况下,为什么std::begin() const_iterator 总是返回std::begin()而不是 iterator

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42580761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档