2013-06-09 6 views
13

Während ich an einer C++ - Bibliothek arbeite, die um 2014 herum veröffentlicht wird, habe ich derzeit Design-Entscheidungen zu treffen. Eines der sehr nützlichen Tools, die mit C++ 14 veröffentlicht werden, ist std::optional. Ich würde gerne wissen, mit welcher Version von g++/libstdc++ kann ich erwarten, es mit -std=c++1y zu haben.Implementierungsstatus von std :: optional in g ++/libstdC++?

+1

Ich änderte den Tag in C++ 1y nach der Meta-Diskussion, die mit dem C++ 14-Tag-Wiki verbunden war, was zu der Entscheidung führte, [Tag: C++ 14] erst zu verwenden, wenn der Final Draft Standard veröffentlicht wurde. – chris

+1

Wenn jemand die Referenzimplementierung verwenden möchte, ist es [hier] (https://github.com/akrzemi1/Optional/). – PeterT

Antwort

14

Update (Oktober 2016):std::optional war nicht in dem endgültigen Standard 14 C++, so ist es nie mit -std=c++1y zur Verfügung. Stattdessen enthält GCC 4.9 std::experimental::optional, das mit -std=c++1y verfügbar ist.

GCC 7 schließt std::optional mit -std=c++1z, d. H. C++ 17, ein.

Original-Antwort (Juni 2013):

Es ist derzeit nicht implementiert, siehe http://gcc.gnu.org/ml/libstdc++/2013-06/msg00032.html für den Status von C++ 14 Funktionen in GCC Rüssel.

Wenn es implementiert wird, hängt davon ab, wenn jemand freiwillig die Arbeit macht, so ist es unmöglich vorherzusagen.

Ich würde erwarten es wird für GCC 4.9 getan, die kurz vor dem C++ 14 Standard veröffentlicht werden sollte, aber es gibt keine Garantien. Es ist unwahrscheinlich, dass es zu GCC 4.8 hinzugefügt wird, da es bereits freigegeben ist und im Gegensatz zu GCC 4.9 (dh der GCC Subversion Trunk) hat das __cplusplus Makro den gleichen Wert für -std=c++11 und -std=c++1y, so dass es für GCC 4.8 keine Möglichkeit gibt, selektiv Funktionen für -std=c++1y zu aktivieren nur.

+4

"Warum fragen Sie das auf SO" - so finden Leute, die nach Antworten auf SO suchen, es! –

+5

Dies war der beste Google-Hit, als ich untersuchte, warum 'std :: optional' in gcc nicht funktionierte! Also ich bin froh, dass es hier gefragt und beantwortet wurde. –

+0

Wenn die Frage in der gcc-help-Liste gestellt worden wäre, wäre das der Top-Hit gewesen. Wie auch immer, diese Antwort war bis gestern falsch, denn bis C++ 17 gab es so etwas wie 'std :: optional' nicht, so dass es bis vor kurzem in keinem Compiler lief. –

Verwandte Themen