2013-06-10 11 views
9

Powodem, dla którego pytam, jest to, że istnieją sprzeczne informacje w Internecie. Z jednej strony na isocpp.org stwierdza, że ​​GCC 4.8.1 ma całkowicie zaimplementowany standard C++ 11. Z drugiej strony, GCC C++11 support page stwierdza, że ​​nie ma "minimalnego wsparcia dla wykrywania wycieków i wykrywania wycieków opartego na osiągalności". Czy GCC 4.8.1 naprawdę jest kompletny w C++ 11?Czy gcc 4.8.1 ma obsługę C++ 11 do zbierania śmieci?

+2

Czy zbiórka odpadów nie jest opcjonalna? –

+4

Gcc 4.8 jest w pełni zgodny z C++ 11 na poziomie podstawowym, co nie oznacza, że ​​implementacja biblioteki jest w pełni zgodna z C++ 11. –

+5

@Mechanicalsnail: GC jest opcjonalne, minimalna obsługa GC nie jest i nie występuje w gcc od wersji 4.8 –

Odpowiedz

12

Obsługa usuwania śmieci jest opcjonalna w standardzie (patrz Bjarne Stroustrup C++11 FAQ). Dlatego GCC 4.8.1 jest kompletny, ponieważ implementuje wszystkie obowiązkowe główne części standardu.

Komentarze potwierdziły, że moja odpowiedź jest niejasna, będę bardziej konkretny: mówiłem tylko o podstawowym wsparciu dla zbierania śmieci. Część biblioteczna jest obowiązkowa. Wersja libstdC++ dostarczana z GCC 4.8.1 nie jest w pełni zgodna z C++ 11 (na przykład <regex> nie działa), a ABI do czyszczenia pamięci jest częścią brakujących funkcji.

+1

+1, patrz [Wniosek N2670] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm): * Implementacja, która nie obsługuje usuwania i narzędzi do zbierania śmieci wszystkie wywołania biblioteki opisane tutaj jako no-ops są zgodne. * – syam

+5

Zapewnienie GC jest opcjonalne, pod warunkiem, że * wsparcie * dla GC nie jest. Pozycja w statusie gcc C++ 11 odnosi się do * wsparcia * dla GC i nie jest zaimplementowana. To znaczy, używając powyższego komentarza Syama: wykonanie GC jest opcjonalne (połączenia mogą być bez opcji), ale interfejs musi być obecny (nie jest to opcjonalne) –

Powiązane problemy