2014-04-10 12 views
7

Chciałbym wypróbować niektóre z nowych funkcji, które sprawią, że będzie funkcjonować pod C++ 2014 revision, takich jak std::make_unique i std::filesystem. Używam Ubuntu 14.04 i GCC/G ++ 4.8 (z instalacją libstdC++ - 4.8-dev) i zestawu flag -std=c++1y. Ale nie ma std::make_unique, gdy zawierają nagłówki <tr1/memory> i. Co muszę zrobić, aby móc korzystać z niektórych z tych nowych funkcji?C++ 14 TS i GCC 4.8

Dzięki!

Odpowiedz

13

<tr1/memory> nie jest standardowym nagłówkiem C++ 14. Po prostu chcesz <memory>. To samo dla <dynarray>.

Jednak oba nie są obsługiwane w GCC 4.8. Należy zaktualizować do GCC 4.9 lub klang 5.

Status wsparcia kompilatora GCC dla C++ 1y można sprawdzić pod numerem on the Language Features status page, a obsługę biblioteki można uzyskać na Library Support status page.

+0

Próbowałem już, ale nie mam żadnego nagłówka '' (myślę, że nie będzie go do C++ 14). Ale mimo to użycie '' nadal kończy się niepowodzeniem przy próbie użycia 'std :: make_unique'. Spróbuję clang lub g ++ 4.9. Wszelkie porady dotyczące sposobu korzystania z niektórych funkcji TS, takich jak lub nic nie zostały jeszcze zaimplementowane przez autorów kompilatorów? – Athanase

+1

@Aanase g ++ 4.9 nie implementuje 'std :: dynarray', ale' std :: make_unique' powinno być dostępne w ''. Nie jest dostępny w wersji 4.8. Nic z '' nie zostało jeszcze zaimplementowane w g ++. Jedynymi cechami TS zaimplementowanymi w g ++ 4.9 są 'std :: optional' oraz' std :: string_view'. – Morwenn

+0

clang jest tylko kompilatorem, standardowa biblioteka jest dostarczana z gcc lub xcode lub visual studio. Projekt llvm posiada nowy podprojekt [C++ library] (http://libcxx.llvm.org/), ale obecnie jest przeznaczony głównie dla systemu Linux lub Mac OS X. – galop1n

Powiązane problemy