unspecified operator[](difference_type n) const; // (1) C++11
constexpr unspecified operator[](difference_type n) const; // (1) C++17
constexpr reference operator[](difference_type n) const; // (1) C++20
概要
任意の位置にランダムアクセスする。
戻り値
備考
- (1) :
- C++11 : 戻り値の型は未規定である。
base()[n]がプロキシオブジェクトを返す場合に、reference(value_type&&) へ暗黙変換すると、破棄済みの一時オブジェクトを参照しうるため - C++17 :
constexprが付加された - C++20 : 戻り値の型が
referenceとなり、ranges::iter_moveを用いて規定されるようになった
- C++11 : 戻り値の型は未規定である。
例
#include <iostream>
#include <vector>
#include <memory>
#include <iterator>
int main()
{
std::vector<std::unique_ptr<int>> v;
for (int i = 0; i < 5; ++i)
v.emplace_back(new int(i));
auto it = std::make_move_iterator(v.begin());
std::unique_ptr<int> p = it[2];
std::cout << *p << std::endl;
}
出力
2
バージョン
言語
- C++11
処理系
- Clang: ??
- GCC: 4.6.1 ✅
- ICC: ??
- Visual C++: ??