GCC の最新版, GCC-4.7.0 がリリースされました.
Git ミラーにおける ID はこちらです:
- gcc-4.7.0
- 93c5ebd73a4d1626d25203081d079cdd68222fcc
GCC-4.7.0 は,実に1年ぶりとなる新機能追加版であり,
主に C++11(C++0x) の実装が強化されているほか,エラーメッセージ等が改善されています.
また, C++11 を有効にする為のオプションとして,今までの -std=c++0x に加えて
-std=c++11 というオプション指定も使えるようになっています.
追加された C++11 の機能は,以下を参照してください:
- http://gcc.gnu.org/gcc-4.7/changes.html#cxx
- http://gcc.gnu.org/gcc-4.7/cxx0x_status.html (一覧, 4.6.x 以前に追加された機能を含む)
どの機能も実際のコードを書く際に便利に使えるものばかりであり*1,
エラーメッセージの改善と合わせ, C++11 モードも かなり実用的になってきた印象です.
また, C++11 の規格が確定する直前に間に行われた規格の変更にも(ある程度)対応しているため,
GCC-4.6.x まではコンパイルできたコードがコンパイルできなくなっているケースがあります:
struct hoge { hoge() {} // move コンストラクタが明示的に定義されている hoge( hoge const& ) = default; hoge( hoge && ) = default; // 代入演算子は定義されない // このとき, gcc-4.6 ではデフォルトの代入演算子が自動生成されるが, // gcc-4.7 および C++11 の規格では = delete; される }; int main() { hoge x, y; x = y; // 4.6 以前では OK , 4.7 および C++11 では NG }
とはいえ, C++11 を駆使した前衛的なコードを書いていない限り,特に問題にならないでしょう.