VC++2005 SP1の変更点

Visual Studio 2005 SP1をインストールしました。
予めCRTソースをバックアップしておいたので、C/C++標準ライブラリの差分をざっと確認したところ、こんな感じでした。

  • search_n()のアルゴリズムバグの修正
  • list::remove()で削除前に引数が一時オブジェクトにコピーされるようになった(理由はおそらくこれ)
  • basic_iostreamのコンストラクタでios_base::_Init()が二度呼ばれるバグの修正
  • マクロlogf()の末尾にある余分なセミコロンが削除された
  • num_getの桁区切りに関するパースの修正

それ以外にも_SECURE_SCL定義時のアルゴリズムに配列用のオーバーロードが追加されていたり、コンパイラ組み込み関数が20個ほど増えていたりします。


SP1になってもマクロ_MSC_FULL_VERの値が変わっていないので、コード上でコンパイラを区別する方法は不明です。
ライブラリの判定なら、_SCL_CHECKED_ALGORITHM_WARNなどの新しく増えたマクロがいくつかあるので、これらを利用することで可能です。


試しにBoost 1.33.1をリビルドしてみましたが、今のところ問題はなさそうです。