2013-06-09 12 views
13

जैसा कि मैं एक सी ++ लाइब्रेरी पर काम कर रहा हूं जिसे 2014 के आसपास सार्वजनिक रूप से रिलीज़ किया जाएगा, मेरे पास वर्तमान में डिज़ाइन विकल्प हैं। सी ++ 14 के साथ जारी किए जाने वाले बहुत उपयोगी टूल में से एक std::optional है। मैं जानना चाहता हूं कि g++/libstdc++ का कौन सा संस्करण मैं -std=c++1y का उपयोग कर सकता हूं।g ++/libstdC++ में std :: वैकल्पिक की कार्यान्वयन स्थिति?

+1

मैंने सी ++ 14 टैग विकी से जुड़े मेटा चर्चा के अनुसार टैग को सी ++ 1y में बदल दिया जिसके परिणामस्वरूप अंतिम ड्राफ्ट मानक जारी होने तक [टैग: सी ++ 14] का उपयोग न करने का निर्णय लिया गया। – chris

+1

यदि कोई संदर्भ कार्यान्वयन का उपयोग करना चाहता है, तो यह [यहां] (https://github.com/akrzemi1/Optional/) है। – PeterT

उत्तर

14

अद्यतन (अक्टूबर 2016):std::optional अंतिम सी ++ 14 मानक में नहीं था, तो यह -std=c++1y के साथ उपलब्ध नहीं है। इसके बजाय जीसीसी 4.9 में std::experimental::optional शामिल है जो -std=c++1y के साथ उपलब्ध है।

जीसीसी 7 में std::optional-std=c++1z यानी सी ++ 17 के साथ शामिल होगा।

मूल जवाब (जून 2013):

यह वर्तमान में लागू नहीं किया गया है, जीसीसी की डिक्की में सी ++ 14 सुविधाओं की स्थिति के लिए http://gcc.gnu.org/ml/libstdc++/2013-06/msg00032.html देखते हैं।

जब इसे कार्यान्वित किया जाता है तो इस पर निर्भर करता है कि जब कोई स्वयंसेवक काम करता है, तो भविष्यवाणी करना असंभव है।

मैं की उम्मीद करता हूं यह जीसीसी 4.9 के लिए किया जाएगा, जिसे सी ++ 14 मानक से कुछ समय पहले रिलीज़ किया जाना चाहिए, लेकिन इसकी कोई गारंटी नहीं है। जीसीसी 4.8 में जोड़ा जाने की संभावना नहीं है, क्योंकि यह पहले से ही जारी है और जीसीसी 4.9 (यानी जीसीसी सबवर्जन ट्रंक) के विपरीत __cplusplus मैक्रो के पास -std=c++11 और -std=c++1y के लिए समान मूल्य है इसलिए जीसीसी 4.8 के लिए -std=c++1y के लिए चुनिंदा रूप से सुविधाओं को सक्षम करने का कोई तरीका नहीं है केवल।

+4

"इसे SO पर क्यों पूछें" - इसलिए जो लोग एसओ पर उत्तर खोजते हैं उन्हें ढूंढें! –

+5

यह शीर्ष Google हिट था जब मैं जांच कर रहा था कि क्यों 'std :: वैकल्पिक' gcc में काम नहीं किया! तो मुझे खुशी है कि यह पूछा गया था और यहां जवाब दिया। –

+0

यदि जीसीसी-सहायता सूची पर सवाल पूछा गया था जो शीर्ष हिट होता। वैसे भी, यह जवाब कल तक गलत था, क्योंकि सी ++ 17 तक 'std :: वैकल्पिक' जैसी कोई चीज़ नहीं थी, इसलिए यह हाल ही में किसी भी कंपाइलर में काम नहीं करता था। –

संबंधित मुद्दे