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をリビルドしてみましたが、今のところ問題はなさそうです。