Я пытаюсь скомпилировать программу на c ++, которая использует std :: make_reverse_iterator, но я получаю ошибку заголовка. Ссылка говорит о том, что функция действительно поддерживается начиная с c ++ 14, поэтому я добавил флаг -std = c ++ 14, но все еще без кубиков. Я копался некоторое время и не могу понять, почему это происходит. Есть идеи? Моя версия компилятора g ++ 4.9.2
Вот простая программа (взята из приведенного выше ref ), команды, использованные для ее компиляции, и вывод программы.
test.cpp:
#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
int main() {
auto v = std::vector<int>{ 1, 3, 10, 8, 22 };
std::sort(v.begin(), v.end());
std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, ", "));
std::cout << '\n';
std::copy(
std::make_reverse_iterator(v.end()),
std::make_reverse_iterator(v.begin()),
std::ostream_iterator<int>(std::cout, ", "));
}
Компилятор:
g++ -std=c++14 test.cpp -o test
Выход:
test.cpp: In function ‘int main()’:
test.cpp:15:9: error: ‘make_reverse_iterator’ is not a member of ‘std’
std::make_reverse_iterator(v.end()),
^
test.cpp:16:9: error: ‘make_reverse_iterator’ is not a member of ‘std’
std::make_reverse_iterator(v.begin()),