おそらく最初に、絶対に使用できるようにしたい 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 分) ので、バイナリのみの製品をリリースしたい場合は、先に進んでください。ユーザーにとっては別の問題です。したがって、すべての通常のユーザーがコンパイルする必要があるヘッダーのみのテンプレート ライブラリを提供している場合は、移行ペースをより保守的にする必要があります。