2011-11-28 5 views
19

हालांकि क्लैंग के सी ++ 11 समर्थन से संबंधित कुछ प्रश्न हैं, लेकिन मुझे लगता है कि मेरा सी ++ 11 कोड खाने के लिए clang++ प्राप्त करने में सक्षम नहीं है।क्लैंग ++ सी ++ 11 आमंत्रण

$ clang++ --version 
clang version 2.9 (tags/RELEASE_29/final) 
Target: x86_64-pc-linux-gnu 
Thread model: posix 

the clang C++11 status page के अनुसार मैं कम से कम आंशिक समर्थन (जैसे सही कोण कोष्ठक) होना चाहिए, लेकिन यह सभी सुविधाओं मैं परीक्षण किया मना कर दिया।

क्या सी ++ 11 का उपयोग करने के लिए क्लैंग को बताने के लिए कोई स्विच है?


उदाहरण परीक्षण:

$ clang++ -stdlib=libstdc++ cpp11.cpp 
cpp11.cpp:16:33: error: a space is required between consecutive right angle brackets (use '> >') 
    std::vector<std::pair<int,char>> xs; 
           ^~ 
           > > 
cpp11.cpp:18:8: error: C++ requires a type specifier for all declarations 
    auto y = x; 
    ~~~~^
2 errors generated 
+4

क्या आपने '-std = C++ 0x' को आजमाया था? – ildjarn

+0

@ildjarn: हाँ, लेकिन यह उस तर्क पर गंभीरता से चकित करता है (त्रुटि संदेशों के लगभग दो पृष्ठ और अंतिम सेगफॉल्ट)। – bitmask

+0

क्या यह ऐप्पल संस्करण या मूल संस्करण है? पूछ रहा है क्योंकि मैंने मुख्य साइट पर एक ऐप्पल बग की सूचना दी और फ्लेम हो गया :) –

उत्तर

19

ildjarn सही तर्क, -std=c++0x या -std=c++11 बताते हैं। उस तर्क के साथ आप जो त्रुटियां प्राप्त कर रहे हैं, हो सकता है क्योंकि libstdC++ का संस्करण आप उपयोग कर रहे हैं कुछ C++ 11, या गैर-मानक C++ का उपयोग करता है, जो क्लैंग 2.9 का समर्थन नहीं करता है।

+4

'clang ++ -std = C++ 0x -stdlib = libC++ ... '(मान लीजिए, आपके पास libC++ स्थापित है) के साथ कुछ कोशिश करें। – Hugh

+0

@Huw: हाँ, मुझे अभी एहसास हुआ कि मेरे पास 'libC++' और 'libstdC++' के बीच विकल्प है और अब तक मैं 'clang' या' llvm' को संकलित करने के लिए बहुत आलसी था, इसलिए मुझे इसे अपने पैकेज स्रोतों से मिला, जो करता है 'libC++' शामिल नहीं है और यदि मैं प्रोजेक्ट प्रलेखन पर विश्वास करता हूं कि लाइब्रेरी केवल मैक के लिए उपलब्ध है। जिसका मतलब है कि यह मेरे लिए उपलब्ध नहीं है, है ना? – bitmask

+0

@bitmask: हाँ, ऐसा लगता है कि यह गैर-ओएस एक्स सिस्टम के लिए उपलब्ध नहीं है, हां। – Hugh