Я пытаюсь скомпилировать простой кусок кода в соответствии со стандартом C ++ 17:
#include <algorithm>
#include <iterator>
#include <vector>
using namespace std;
int main() {
vector<int> numbers = {6, 1, 3, 9, 1, 9, 8, 12, 1};
vector<int> res;
copy(begin(numbers), end(numbers), make_move_iterator(back_inserter(res)));
return 0;
}
Я получаю сообщение об ошибке make_move_iterator(back_inserter(res))
.
Начало ошибки (исключая бессмысленная (на мой взгляд) последующая информация):
In file included from C:/Users/Name/mingw/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/stl_algobase.h:67,
from C:/Users/Name/mingw/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/algorithm:61,
from C:\Users\Name\CLionProjects\coursera_cpp_course3\week5\c3_w5_t6_merge_sort_3\c3_w5_t6_merge_sort_3.cpp:2:
C:/Users/Name/mingw/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/stl_iterator.h: In instantiation of 'class std::move_iterator<std::back_insert_iterator<std::vector<int> > >':
C:\Users\Name\CLionProjects\coursera_cpp_course3\week5\c3_w5_t6_merge_sort_3\c3_w5_t6_merge_sort_3.cpp:49:77: required from here
C:/Users/Name/mingw/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/stl_iterator.h:1023:24: error: forming reference to void
__base_ref>::type reference;
^~~~~~~~~
Я прочитал документацию по make_move_iterator () и не видел никаких предварительных условий для ее использования здесь.
Почему это происходит? Спасибо за ваши предложения.
Условия, при которых я пытаюсь скомпилировать:
Windows 10
MinGW 8.1 .0
CMake 3.17.1
Обновление: Я понял свою ошибку. Здесь должно быть:
copy(make_move_iterator(begin(numbers)), make_move_iterator(end(numbers)), back_inserter(res));