này không công việc:Tại sao chương trình đơn giản này sử dụng std :: rotate không biên dịch?
#include <algorithm>
int main()
{
int a[] = { 1, 2, 3 };
auto it = std::rotate(std::begin(a), std::begin(a) + 1, std::end(a));
}
Các lỗi tôi nhận được là:
main.cpp:6:10: error: variable has incomplete type 'void'
auto it = std::rotate(std::begin(a), std::begin(a) + 1, std::end(a));
Đây rõ ràng là hành vi không đúng, như tuyên bố xoay là:
template<class ForwardIterator>
ForwardIterator rotate(ForwardIterator first, ForwardIterator middle,
ForwardIterator last);
Tại sao chương trình đơn giản này không biên dịch được không?
Trước khi C++ 11, 'rotate' không trả về bất kỳ thứ gì. Rõ ràng việc triển khai thư viện chuẩn của bạn chưa hoàn toàn cập nhật. –
Đó là [vấn đề đã biết] (https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x) cho libstdC++ ("xoay trả về void."). – user657267