我想弄清楚到底是什麼要求就forward_iterators' reference
類型做出。在顯而易見的情況下,您將擁有value_type = T;
和reference = T&;
。對前向迭代器要求讀cppreference page,只見要求::參考
Expression Return Equivalent expression
*i++ reference value_type& temp=*i; ++i; return temp;
std::vector<bool>
表明,「等價表達式」並不總是有效的,因爲它返回一個代理對象:
std::vector<bool> v(10);
auto i = v.begin();
std::vector<bool>::iterator::value_type& temp = *i; // error
// can't bind bool& to std::_Bit_reference
等效表達不在我看到的標準中提到。代理對象允許分配,這可能是符合性的關鍵。
除了試圖確定要求之外,我的具體問題涉及知道是否具有引用或支持賦值的地方,可以使用標準庫。
是否Container<int>
與iterator
標記爲forward_iterator_tag
和reference == int
有效嗎?
C++ 11表109中§24.2.5/ 4給出了下面的操作語義的r ++':'{X TMP = R; ++ R;返回tmp; }',並聲明返回類型應該可以轉換爲'const X&'。 –