GCC-4.7.0 がリリースされた

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 の機能は,以下を参照してください:

どの機能も実際のコードを書く際に便利に使えるものばかりであり*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 を駆使した前衛的なコードを書いていない限り,特に問題にならないでしょう.

*1:ただしユーザ定義リテラルを除く