1

Apple LLVMコンパイラに同梱されているlibc ++とlibstdc ++を使用する場合のc ++ 11サポートの違いを判断する方法を誰か提案できますか?

特に、私は現在、Xcode 4.5.2 に同梱されている LLVM 4.1 を使用しています。

おそらく、答えは、clang がこのバージョンで提供する c++11 サポートのレベルと、4.1 に同梱されている libc++ と libstdc++ のバージョンに部分的に依存します。

私の一般的な感覚では、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++ にリンクする必要がある場合があるため、何を失う可能性があるかを把握したい]

4

1 に答える 1

3

LLVM 4.1 に同梱されている libstdc++ は gcc-4.2 です。そのバージョンには C++11 のサポートがありません。ただし、いくつかの tr1 サポートがあります。

さらに、C++11言語機能をチェックする最良の方法は、clang のhas_feature マクロ testを使用することです。

C++11 ライブラリ機能については、libc++ を使用する必要があります。

于 2012-12-11T21:23:01.390 に答える