2013-06-10 10 views
9

La ragione per cui sto chiedendo è che ci sono informazioni contraddittorie sul web. Da un lato su isocpp.org si afferma che GCC 4.8.1 ha implementato completamente lo standard C++ 11. D'altra parte lo GCC C++11 support page afferma che non esiste un "supporto minimo per la rilevazione di fughe e la rilevazione di perdite basata sulla raggiungibilità". Dunque GCC 4.8.1 è davvero completo di C++ 11?gcc 4.8.1 supporta C++ 11 per la garbage collection?

+2

La raccolta dati inutili non è facoltativa? –

+4

Gcc 4.8 è pienamente compatibile con C++ 11 a livello di linguaggio principale, il che non significa che l'implementazione della libreria sia pienamente compatibile con C++ 11. –

+5

@Mechanicalsnail: GC è facoltativo, il supporto minimo per GC non è e manca a gcc a partire da 4.8 –

risposta

12

Il supporto per la garbage collection è facoltativo dallo standard (vedere Bjarne Stroustrup C++11 FAQ). Pertanto, GCC 4.8.1 è completo poiché implementa tutte le parti principali obbligatorie dello standard.

I commenti hanno dimostrato che la mia risposta non è chiara, sarò più specifico: stavo solo parlando del supporto principale per la raccolta dei rifiuti. La parte della biblioteca è obbligatoria. La versione di libstdC++ fornita con GCC 4.8.1 non è completamente compatibile con C++ 11 (ad esempio, <regex> non funziona al momento) e l'ABI per la garbage collection fa parte delle funzionalità mancanti.

+1

+1, vedere [Proposta N2670] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm): * Un'implementazione che non supporta la garbage collection e gli strumenti tutte le chiamate alle librerie descritte qui come no-op sono conformi. * – syam

+5

La fornitura di un GC è facoltativa, ma il supporto * * per un GC non lo è. La voce nello stato gcc C++ 11 si riferisce al * supporto * per un GC e non è implementato. Cioè, usando il commento di Syam sopra: fare GC è opzionale (le chiamate possono essere no-op), ma l'interfaccia deve essere presente (questo non è opzionale) –