2011-06-22 6 views
4

標準は間違いなく数年かかるでしょう。しかし、私はそれを読んでいましたが、少なくとも図書館の追加(特にハッシュマップ)はすぐに役に立ちます。私はg ++のドキュメントで、4.3以上のものを入手でき、存在するものは何でも新しい機能を要求するフラグを使用していることに気づいたが、ライブラリを入手する方法があるかどうか疑問に思っていた。そして、最高のブーストのものがたくさん入っているということは本当に素晴らしく、ついにまともな乱数生成機能が組み込まれました!任意のコンパイラでのC++ 0xライブラリの可用性?

これで、autoのようなクールな新しい言語機能を使用できないとしても、今すぐ使用できるコンパイラはありますか?

答えて

3

GCCは既にC++ 0xのがかなり良いのサブセットをカバーしています。バージョン4.4は既にかなり使いやすく、4.6も揃っています。テンプレートエイリアスはありませんが、ライブラリの非常に大きな部分と同様に、非常に有用な言語機能の多くはそこにあり、完全に機能しています。

ここにはfull feature listがあります。

+0

ありがとうございました、私はリストで4.6を見て、それが均等になっているかどうかは分かりませんでした!私は今日それをダウンロードする必要があります。私はそこに別の質問があることを知っています - システムのものに加えて4.6コンパイラをインストールするのに問題がありました。 – Dov

+0

@Dov:私はGCC 4.6の独自のバージョンを様々なLinuxに構築しました。 MacOSX(ルートと非ルートの両方)に問題はありません。必要なライブラリ(GMP、MPFR、MPC)を取得し、 '--prefix'で設定し、' make install'を実行してください。私はそれがとてもわかりました! –

+0

それ自体をビルドした後に問題が発生しましたが、ライブラリの一部が/ opt/tools/libに入っていて、 opt/tools/lib64のように、両方をLD_LIBRARY_PATHに入れるだけでした。 4.5.1はうまく動作しますが、私はその間に4.6または4.7をインストールします。 – Dov

7

標準ライブラリ拡張を使用する場合は、Boostを使用できます。とにかく、新しい標準ライブラリの強化は、主にBoostライブラリに触発されました。

サポートコンパイラでは、Visual Studio 2010 supports a subset of the C++11 standard、GCCはcurrently the best support for C++11、Clangもadopting the new standardです。他のコンパイラについて知りませんが、すぐにそれが続くと思います。

+1

ほとんど新しいですが、新しいライブラリは主にBoostにあります。 – Puppy

1

GCC/libstdC++には、ほとんどのライブラリがありますが、インクルードパスにはtr1/が必要です(ハッシュマップの場合は#include <tr1/unordered_map>)。また、stdではなく、新しいライブラリの内容をstd::tr1という名前空間に置きます。

(TR1は、C++ 0xのためのライブラリの追加を記述した報告書だったテクニカルレポート1、の略です。)オプション-std=c++0x

1

ライブラリの一部、特にここで言及したもの(unordered_map)は、2003年の技術レビューの一部として定義され、主に変更されていないC++ 0x標準に移行されました。ほとんどのコンパイラでは、名前空間にTR1ライブラリが実装されています。

他のライブラリは、今後の標準(functionbindthread ...)のためのLIBSの大きな源であるブースト、他のソースから引き出されたが、それはあなたのプロジェクトに追加するかに依存します。

ライブラリをC++ 0xから抽出して非C++ 0xコンパイラで使用できるかどうかについては、新しい機能を使用するため、おそらくそれはできませんコンストラクタ)、それはコンパイルに失敗します。

3

別にGCCからGCCでサポートされているすべてのプラットフォーム上で、そのデフォルトのlibstdC++と-std=c++0xモードでは、あなたも使用することができるのLinux/BSD/Mac上でうまく動作しますが、Windowsにまだ移植されていませんLLVMのlibc++、。ここで

0

では、C++ 0xの新しいC++ 0xのサポートが追加されるたびにリストが更新されるコンパイラ

http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport

のほとんどのサポートを見つけることができるリンクです。 g ++は、今のところ最大数のC++ 0x機能をサポートしています。

関連する問題