- iterator[meta header]
- std[meta namespace]
- function template[meta id-type]
- cpp11[meta cpp]
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[link move_iterator.md]
move_iterator
のヘルパ関数。
return move_iterator<Iterator>(i);
- move_iterator[link move_iterator.md]
#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;
}
- std::make_move_iterator[color ff0000]
0
- C++11
- Clang: ??
- GCC: 4.7.0 [mark verified]
- 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