7

私は現在、C++ に関する知識を新しい標準に更新しています。最高のおもちゃを手に入れたばかりの小さな子供のような気分になります。いつもそれで遊びたいのですが、それが原因で友達を失いたくないのです。

私は、いくつかの新機能が非常に役立ついくつかのオープン ソース プロジェクトに参加しているので、それらを使用することに非常に熱心です。私の質問は、C++11 コードをコンパイルできるユーザーの数です。たとえば、C++11 完全コンパイラの一般大衆での採用率はどれくらいですか? 誰か関連情報を持っていますか?

gcc 4.8.1clang 3.3が完全な C++11 機能であることは知っていますが、最新のコンパイラを実際に使用している人がどれだけいるかはわかりません。ほとんどの codemonkey が確実にそうしていることは知っていますが、平均的なオープン ソース ユーザーはどうでしょうか? 潜在的なユーザーを平手打ちして、コンパイラを更新するように言うことは、実際にはオプションではありません。

この質問は、これらの質問に似ているために批判/クローズされる可能性があることを認識しています:

  1. 現在、C++11 をどのように使用していますか?
  2. C++0x 機能を使用するかどうか

実際に承認された規格について話しているため、現在は状況が異なることを指摘したいと思います。採用率を意識することは、プログラミングを実践する上で重要だと思います。

4

2 に答える 2

6

おそらく最初に、絶対に使用できるようにしたい C++11 を決定してから、サポートしたいプラットフォームでこれをサポートする最も低いコンパイラ バージョンを検索する必要があります。Apache には、さまざまな C++11 機能をサポートする各主要コンパイラ (gcc、clang、visual c++、intel など) の最も初期のバージョンに関する優れた調査があります。

私の経験では、gcc 4.7 と Clang 3.2 はほぼ完全な機能を備えています (ただし、コンストラクターの継承などは便利ですが、ゲームチェンジャーではありません)。gcc 4.6 (ただし、多くのバグを避けるために 4.6.3 バージョンを使用します) または Clang 3.1 で多くの便利な機能を取得できます。これは、gcc 4.6 が公式の Android NDK コンパイラでもあるため (それをサポートする場合) 便利です)。 .

Linux のサポートを検討している場合は、DistroWatchを参照してください。ここでは、各ディストリビューション バージョンにインストールされている gcc バージョンを確認できます。たとえば、 Ubuntuベースの多くの一般的なディストリビューションは、ほぼ 1 年間 gcc 4.7 を使用しており、次のリリースで gcc 4.8.1 (機能が完了) にアップグレードする予定です。

Windows では、現在 MinGW 4.8.1 を実行しているNuwen ディストリビューションがあります(32 ビットのみでスレッドなし)。Visual C++ は仕事ができておらず、gcc 4.8 と Clang 3.3 がどこにあるかを理解するにはしばらく (1 年以上?) かかります。

ディストリビューションが最新バージョンを公式にサポートしていなくても、最先端を提供するプライベート パッケージ リポジトリがあります (多くの場合、公式パッケージングを行っているのと同じ人によって維持されます)。LLVM プロジェクトは、 C++14 機能の多くを(モードで)有効にする事前構築済みのナイトリー SVN スナップショットも提供します。gccの場合、ナイトリーパッケージはありません。-std=c++1y

開発者にコンパイラ/ディストリビューションのアップグレードを強制することについて。それほど大したことではないと思います(ただし、最初に彼らと相談することについての@ArneMertzのポイントは、ここで非常に優れています)。仮想マシンは簡単にインストールできます (エンド ツー エンドで最大 45 分) ので、バイナリのみの製品をリリースしたい場合は、先に進んでください。ユーザーにとっては別の問題です。したがって、すべての通常のユーザーがコンパイルする必要があるヘッダーのみのテンプレート ライブラリを提供している場合は、移行ペースをより保守的にする必要があります。

于 2013-08-22T09:44:58.830 に答える