Это не работы:Почему эта простая программа, использующая std :: rotate, не компилируется?
#include <algorithm>
int main()
{
int a[] = { 1, 2, 3 };
auto it = std::rotate(std::begin(a), std::begin(a) + 1, std::end(a));
}
Ошибки я получаю:
main.cpp:6:10: error: variable has incomplete type 'void'
auto it = std::rotate(std::begin(a), std::begin(a) + 1, std::end(a));
Это явно неправильное поведение, как декларация поворота является:
template<class ForwardIterator>
ForwardIterator rotate(ForwardIterator first, ForwardIterator middle,
ForwardIterator last);
Почему эта простая программа не скомпилируется?
Прежде чем C++ 11, 'rotate' ничего не вернул. По-видимому, ваша стандартная реализация библиотеки не совсем обновлена. –
Это известная проблема (https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x) для libstdC++ ("rotate возвращает void."). – user657267