namespace std {
template <class Iterator>
move_iterator<Iterator>
make_move_iterator(const Iterator& i); // C++11
template <class Iterator>
move_iterator<Iterator>
make_move_iterator(Iterator i); // C++14
template <class Iterator>
constexpr move_iterator<Iterator>
make_move_iterator(Iterator i); // C++17
}
概要
move_iterator
のヘルパ関数。
戻り値
return move_iterator<Iterator>(i);
例
#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;
std::cout << *p << std::endl;
}
出力
0
バージョン
言語
- C++11
処理系
- Clang: ??
- GCC: 4.7.0 ✅
- ICC: ??
- Visual C++: ??
参照
- LWG Issue 2061.
make_move_iterator
and arrays- C++11ではパラメータが
const Iterator&
だったが、C++14ではIterator
に変更された。これは、組み込み配列を渡された際に、ポインタに型推論(decay)させるため。
- C++11ではパラメータが
- P0031R0 A Proposal to Add Constexpr Modifiers to
reverse_iterator
,move_iterator
,array
and Range Access