#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;
}
我的編譯器是鐺4.0。輸出是:爲什麼在這種情況下「std :: begin()」總是返回「const_iterator」?
class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<int> > > class std::_Vector_iterator<class std::_Vector_val<struct std::_Simple_types<int> > >
這意味着:pos_1 = pos_2;
是確定的,而pos_2 = pos_1;
也不行。
爲什麼在這種情況下std::begin()
總是返回const_iterator
而不是iterator
?
我的猜測是,那是因爲它是因爲推導的youre的pos_1''使用臨時類型。它們只綁定到const引用和所有這些,這是const在遊戲中的地方。 – Borgleader