2014-10-14 23 views
5

Bu does not eser:Neden bu basit program std :: rotate kullanarak derleme değil mi?

#include <algorithm> 

int main() 
{ 
    int a[] = { 1, 2, 3 }; 
    auto it = std::rotate(std::begin(a), std::begin(a) + 1, std::end(a)); 
} 

alıyorum hatadır:

template<class ForwardIterator> 
    ForwardIterator rotate(ForwardIterator first, ForwardIterator middle, 
      ForwardIterator last); 

Neden: döndürmek beyanı olduğu gibi

main.cpp:6:10: error: variable has incomplete type 'void' 
    auto it = std::rotate(std::begin(a), std::begin(a) + 1, std::end(a)); 

Bu yanlış davranış, açıkça Bu basit program derlenemiyor mu? C++ 11, std::rotate used to return void'dan önce

+2

C++ 11'den önce, 'döndür' hiçbir şey döndürmedi. Görünüşe göre standart kütüphane uygulamanız tamamen güncel değil. –

+3

Bu libstdC++ için bir bilinen sorun (https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x) ("döndürme dönüşü geçersiz"). – user657267

cevap

6

. Dolayısıyla, C++ 11 uyumlu olmayan bir uygulamadasınız demektir.

3

Bu ikimizin de libstdc++ ve libc++ kullanarak bir test yaparak bu görebileceğiniz bir libstdc++ sorun gibi görünüyor ve biz libstdc++ kullanırken, yalnızca başarısız görebilirsiniz.

Rextesters online compilers'u kullanmak, hızlı bir sınama işlemini oldukça kolaylaştırır, libc++ live version hata oluşturmaz. libstdc++ live version aşağıdaki hata üretir iken: Açıklamalarda Yukarıda belirtildiği gibi

template< class ForwardIt > 
void rotate(ForwardIt first, ForwardIt n_first, ForwardIt last) (until C++11) 

template< class ForwardIt > 
ForwardIt rotate(ForwardIt first, ForwardIt n_first, ForwardIt last); (since C++11) 

: Biz std::rotate için cppreference girişi bakarsak

error: variable has incomplete type 'void'

biz gerçekten void döndü öncesi C++ 11 sürümünü görebilirsiniz Visual Studio belirtilmesi gereken bir Ayrıca

25.3 | Mutating sequence operations | Partial rotate | returns void. 

, hiçbir p vardır: Bu görünüşte bir known bug olduğunu Bu kod ile roblemler.

İlgili konular