2011-11-28 2 views
19

clang에 대한 C++ 11 지원과 관련하여 여기에 몇 가지 질문이 있지만 clang++을 C++ 11 코드를 먹는 데 사용할 수없는 것으로 보입니다.clang ++ C++ 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에 따르면 나는 적어도 부분적인 지원 (예를 들어 직각 브래킷을)해야하지만, 내가 테스트 한 모든 기능을 거부합니다.

clang에게 C++ 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 : 그렇습니다.하지만 그 논쟁 (약 2 페이지의 오류 메시지와 최종 Segfault)에 대해서는 몹시 질식합니다. – bitmask

+0

Apple 버전입니까, 기본 버전입니까? 내가 메인 사이트에 애플 버그를 신고하고 불을 붙 였기 때문에 묻기. –

답변

19

ildjarn 올바른 인수, -std=c++0x 또는 -std=c++11을 지적한다. 당신이 사용하고있는 libstdC++ 버전이 2.9에서 지원하지 않는 C++ 11이나 비표준 C++를 사용하기 때문에 그 인수로 얻는 오류가있을 수 있습니다.

+4

'clang ++ -std = C++ 0x -stdlib = libC++ ...'(libC++가 설치되었다고 가정 할 때)를 따라 뭔가를 시도해보십시오. – Hugh

+0

@Huw : 예, 방금'libC++'과'libstdC++'사이에 옵션이 있음을 깨달았고, 지금까지'clang'이나'llvm'을 컴파일하는 게 너무 게을러서 패키지 소스에서 가져 왔습니다. 'libC++'를 포함하지 않고, 라이브러리가 Mac에서만 사용 가능하다는 프로젝트 문서를 믿는다면. 그게 내게 쓸모가 없다는 뜻이지? – bitmask

+0

@bitmask : 예, 비 OS X 시스템에서는 사용할 수없는 것처럼 보입니다. – Hugh