2012-12-11 4 views
1

누구나 Apple LLVM 컴파일러와 함께 제공되는 libC++ 대 libstdC++를 사용할 때 C++ 11 지원의 차이점을 확인할 방법을 제안 할 수 있습니까?Apple llvm 4.1에서 libC++과 libstC++를 사용했을 때의 C++ 11 지원의 정확한 차이점은 무엇입니까?

특히 현재 Xcode 4.5.2와 함께 제공되는 LLVM 4.1을 사용하고 있습니다.

아마도이 버전에 대한 clang이 제공하는 C++ 11 지원의 수준에 부분적으로 달려 있으며 부분적으로 libC++ 및 libstdC++ 버전은 4.1과 함께 제공됩니다.

내 일반적인 의미는 libC++를 사용할 때 C++ 11 지원이 "거의 완성"되었지만 libstdC++로 전환 할 때 무언가를 잃어 버린다는 것이지만 몇 가지 간단한 C + +11 기능이 모두 잘 작동하는 것 같습니다.

gcc 4.8과 함께 제공되는 libstdC++에 대한 C++ 11 지원이 상당히 좋지만 llvm 4.1과 함께 제공되는 libstdC++가 오래되었거나 없는지 전혀 알 수 없습니다.

또한 osx 또는 ios 6.01 용으로 컴파일 할 때 C++ 11 지원 (libC++과 함께 llvm 4.1 사용)에 차이가 없다는 의미가 있지만 긍정적이지는 않습니다.

이 모든 것을 파악하는 방법에 대한 제안 사항은 무엇입니까?

[컨텍스트 : 업스트림 의존성으로 인해, 내가 대신의 libC++의 libstdC++를 연결해야 할 수도 있습니다, 그래서 내가 잃을 수 있습니다 알아낼하려는]

+0

내가 아는 한, Apple은 libstdC++ 비트를 포함하여 GPLv3 라이선스 GCC 릴리즈를 사용하지 않습니다. 그게 맞다면, 나는 GCC 4.2의 libstdC++를보고있다. CCC 11 지원이 포함되어 있다면 놀랄 것이다. 간단한 C++ 11 기능이 둘 다 잘 작동한다고 가정하면 잘못된 정보를 얻었지만 (Mac을 직접 사용하지는 않음), 실행 한 테스트에 대한 세부 정보를 포함 할 수 있습니까? 그들이 라이브러리 기능에 대한 테스트인지 확인하려면? 또한, 애플은 libstdC++를 수정 했으므로 GCC의 것 이상의 것을 지원할지도 모른다. – hvd

+0

나는 std :: vector를 통해 원거리 기반 for 루프를 만들었지 만, 실제로 라이브러리 기능을 사용하지는 않지만 구문법상의 설탕 마법과는 거리가 멀다. 불행히도 저는 C++을 15 년 만에 다시 방문했고 쿵푸는 녹슬었고 라이브러리와 언어 기능을 테스트하는 간단한 라이너가 무엇인지 잘 모릅니다. 어쨌든, 귀하의 설명, 특히 GPL 버전에 대한 Apple의 입장에 대한 정보는 완벽하게 이해할 수 있으며 제 이해를 정교화 할 수있는 합리적인 틀을 제공합니다. 감사! – lilinjn

답변

3

LLVM 4.1과 함께 제공되는 GCC-4.2이라는 된 libstdC++를 . 이 버전에는 C++ 11 지원이 없습니다. 그래도 tr1을 지원합니다.

또한 C++ 11 언어 기능을 확인하는 가장 좋은 방법은 clang의 has_featuremacro test을 사용하는 것입니다.

C++ 11 라이브러리 기능의 경우 libC++로 이동해야합니다.

+0

정보를 제공해 주셔서 감사합니다. 위에서 귀하의 정보와 @ hvd의 의견 사이에 나는 이것에 대한 합리적인 판단이 있다고 생각합니다. 나는이 답변을 표시 할 것이다. IOS/arm 또는 OSX/intel 용으로 컴파일 할 때 C++ 11 지원 (언어 또는 라이브러리)에 차이가 있는지 궁금해한다. 이전 릴리스에서는 Objective-C 확장 기능 지원이 다릅니다 (예 : http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/WhatsNewXcode/Articles/xcode_4_4.html). 이것에 대해 새로운 질문을해야합니까? – lilinjn

+0

아니요, 중요한 차이가 없어야합니다. 동일한 도구 세트가 각 릴리스에서 두 플랫폼을 모두 대상으로합니다. –