新しい C++0x を適切にサポートするコンパイラはありますか?
私は GCC を使用していますが、残念ながら現在のバージョン 4.4 では新機能のサポートが不十分です。
Apache 標準 C++ ライブラリ プロジェクトは、主要なコンパイラの C++0x サポートの wiki ページを維持しています。
C++0x サポートを説明しているベンダーのページへのリンクを次に示します。
残念ながら、gcc はおそらくこの段階で得られる最高のものです。
機能とサポートされているコンパイラのリストは次のとおりです。
コンセプトを実装している唯一のコンパイラは conceptgcc です (これも不完全ですが、機能を理解するには十分です)。
Visual C++ 2010 Beta には、いくつかの便利な C++0x サポートがあります。ラムダ、右辺値参照、auto、decltype を操作できます。
Comeau C++ または EDG ベースのコンパイラは、驚くべきことに、C++0x の実装で期待していたほど高度ではありません。
GCC 4.4 (可変個引数テンプレート、イニシャライザ リスト、インライン名前空間、autor、decltype) は、おそらく他のどのコンパイラよりも多くの機能を実装していますが、概念とラムダでは遅れています (別のブランチの開発が進行中です)。
Comeau コンパイラの現在のベータ版は、C++0x を適切にサポートしているようです。
GCC 4.4 には、少なくともいくつかの優れた機能 ( auto、可変個引数テンプレート、右辺値参照など) があります。コンセプトとラムダの開発ブランチもあります。
GCC での C++0x サポート を参照してください。
2011 年 3 月 25 日にリリースされた GCC 4.6 は、 C++0x の非並行性関連の機能のほとんどをサポートしています。C++0x がフラックス コンパイラ サポートではなくなったため、もう少し早く進行する可能性があります。
Scott Meyers は、ここで素晴らしく詳細な比較を行っています。
C++0x はまだ準備が整っていないため、atm をサポートすることを期待しないでください。GCC 4.4 とVisual C++ 2010は、開始するのに適した候補です (ラムダや自動など、最も期待されている新しい機能がいくつかあります) が、標準はまだ完成していません。
Linux/Unix で GCC よりも優れたサポートがあり、より高速で小さいバイナリを生成する場合は、インテル コンパイラをお勧めします (通常、インテル コンパイラを使用すると、無料で 10% のパフォーマンス向上が得られます)。