1.31.0から1.32.0におけるライブラリの変更・新規追加・削除

新しいライブラリの情報は放置しておいてもいろんな人がぽこぽこ書いてくれるはずなので,自分は以前からの変更点を列挙するというニッチなことをしてみるテスト.
以下は/boost/libs以下のHTMLファイル(Boost.Book形式のドキュメントを持ったライブラリの場合はXMLファイル)全てを1.31.0と1.32.0でdiffして,それを概観した結果です.以下に挙げていないライブラリは少なくともドキュメント上の変更はありませんでした.

[新規]algorithm/minmax

minとmaxを同時に知りたい,あるいはコンテナ中の最小要素と最大要素を同時に知りたい場合の効率的なアルゴリズムの提供.

[新規]algorithm/string (string_algo)

文字列に関する各種アルゴリズムライブラリ.

[ドキュメント記述追加]array

次期TRの一部になる予定の旨と,初期化に関する記述が若干変更.

[新規]assign

定数や関数の戻り値をコンテナの要素として詰める際に非常に楽に書けるようにするライブラリ.

[削除]compose

Boostから削除.代替機能はbindまたはlambdaで提供.

[仕様変更]concept_check

reference.htm

TrivialIteratorConceptMutable_TrivialIteratorConceptが削除

[機能追加]config

config.htm

メンバへのポインタがテンプレート引数に使えるかどうかを判定するBOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERSの追加.
std::has_facetに代わるマクロBOOST_HAS_FACETの追加.
WindowsのPlatform APIが使えるかどうかを判定するマクロBOOST_WINDOWSの追加.

[未確認]date_time

ドキュメントがBoost.Book化したため未確認.

[機能追加]dynamic_bitset

/boost/libs/dynamic_bitset/dynamic_bitset.html

1.31.0からの主な変更点が以下にまとめられている.
http://www.boost.org/libs/dynamic_bitset/dynamic_bitset.html#changes-from-previous-ver

  • ストリームからの入力の取り扱いのsemanticsが変更
  • empty(), find_first(), find_next(), get_allocator(), intersects(), max_size()の各メンバ関数が追加
  • basic_streamからのコンストラクタで1.31.0では忘れてた(実装を?)パラメータを追加
  • referenceクラスがよりコンテナのsemanticsに合致するように改良された(swapされても無効化されない)
  • あと最適化

[機能追加]filesystem

比較的大きな変更.主な変更点は以下.

  • operationsにファイルサイズを取得するAPI"file_size"が追加
  • pathに各比較演算子が追加
  • operationsにpathの等価比較のAPI"equivalent"が追加された
  • operationsのcreate_directoryが既存のディレクトリを作成しようとしたときに例外を投げるのをやめて代わりにboolを返すようになった.同様の変更はconvenienceのcreate_directoriesにも適用された
  • index.htmにcygwinユーザ向けのドキュメントが追加された
  • POSIXのLarge File Support(LFS)が可能になった.Linuxも同様.
  • POSIXで非常に長いパスに対してcurrent_path及びinitial_pathがまともに動くようになった

変更点のサマリがindex.htmに掲載されている.

index.htm

1.31からの変更点のサマリを掲載.内容は上の通り.

convenience.htm
  • create_directoriesで既存のディレクトリを作成しようとしたときに例外を投げるのをやめて,返り値のboolで通知するように変更.
  • 拡張子を変えるAPIの説明のtypo修正.(basename -> change_extension
exception.htm

filesystem_errorのコンストラクタのシグネチャ変更

filesystem_error(
  const std::string & who,
  const path & path1,
  const std::string & message );

から

filesystem_error(
  const std::string & who,
  const path & path1,
  const std::string & message,
  error_code ec = other_error );

へ.

faq.htm

何故filesystem::pathoperator==などの比較演算子を提供しないのか?というFAQが削除.(各比較演算子が追加された)

operations.htm

2つのpathが同じディレクトリまたはファイルを指しているかどうかを判定するequivalent関数の追加.
ファイルサイズを返すfile_size関数の追加.
create_directoryが既存のディレクトリを作成しようとしたときに例外を投げるのをやめて代わりにboolを返すようになった.

path.htm

filesystem::pathoperator==, operator!=, operator<, operator<=, operator>, operator>=の各比較演算子の追加.
"path equality"と"path equivalence"の説明追加.

[機能追加]function

http://www.boost.org/doc/html/function_base.html

target(), contains()の各メンバ関数の追加.boost::functionの各クラス(functionN, function)はこのクラスから派生しているので,それらにもこのメンバが追加.

http://www.boost.org/doc/html/function.html

ともに比較演算子(operator==, operator!=)のオーバーロードが大量に追加.

http://www.boost.org/doc/html/function/faq.html

boost::functionによるoverheadはどうなのか?のfaqの追加.(タイトなループを持った関数をboost::function使って呼ぶと1割程度は違ってくるかも)

[機能追加]graph

変更点多い.でもtopにも変更点載ってるし面倒だしでもういいや.('A`)

[機能追加]integer

static_log2.html

詳細はWhat's new参照.

[機能追加]iterator

facade-and-adaptor.html

iterator_facadeクラスに自身のaliasであるiterator_facade_というprotectedなtypedefが追加された.(iterator_facade使ったことのある人なら分かると思うんですが,これは非常に助かる・・・。・゜・(ノД`)・゜・。)
iterator_adaptorクラスに自身のaliasであるiterator_adaptor_というprotectedなtypedefが追加された.(上と同様。・゜・(ノД`)・゜・。)
ただし上記2つはBorland C++ 5.6.4及びMetrowerks CodeWarriorのうち9.0より前のものでは使えない.
これらがあるとどううれしいかはiterator_adaptor.htmlの最後にあるnode_iterの実装を参照.
transform_iteratorからtransform_iteratorへのコンストラクタテンプレートの引数の制限が緩和されて,ベースイテレータがconvertibleかつファンクタがconvertibleなら受け入れられるようになった.(以前はベースイテレータがconvertibleだけに限られていてファンクタは同じ型でないといけなかった)

iterator_adaptor.html

上で言及したこと(iterator_adaptor_のtypedef)が追加されている.
最後のほうのnode_iterの実装で,node_iter::iterator_adaptor_を使っている.

iterator_facade.html

上で言及したこと(iterator_facade_のtypedef)が追記されている.

transform_iterator.html

facade-and-adaptor.htmlの記述と同じ追加事項.

[未確認]lambda

ドキュメント全体がBoost.Book化したため未確認.

[機能追加]math

sinc_sinhc.html(新規追加)

単に抜けてたドキュメントが補完されただけ.

[機能追加][仕様変更]mpl

非常に大きな変更.詳細はドキュメント参照.

[変更][未確認]multi_array

http://www.boost.org/libs/multi_array/doc/reference.html

未確認:diff多すぎ.しかしパッと見タグの違いだけ?

test_cases.html

テストassign_to_array.cppの追加.
テストresize.cppの追加.

[新規]multi_index (旧名:indexed_set)

複数のアクセス手段,例えば複数の順序付けを同時に行えるSTL互換なコンテナの提供.

[新規]numeric/conversion

ポリシーベースで最適化可能な数値変換ライブラリ.

[機能追加][仕様変更]numeric/interval

checking.htm

checking policyの要求事項のうちstatic T inf()が廃止され,代わりにstatic T pos_inf()static T neg_inf()の2つに変更.

examples.htm

cmp_set.cppとcmp_tribool.cppの各テストを追加.

includes.htm

intervalに対するstd::numeric_limitsの特殊化を追加するlimits.hppの追加.

interval.htm

各コンストラクタテンプレート,代入演算子テンプレート,assignメンバ関数テンプレートの追加.
"Interval-aware functions"の項目が追加.

numbers.htm

ゼロ比較をユーザの側で特殊化できる機構の追加.(interval_lib::user名前空間

rounding

rounding policyの要求事項にT conv_up(U)T conv_down(U)を追加.

[機能追加]numeric/ublas

基本的にdiffが多いので主要な変更だけ.

[未確認]preprocessor

未確認:ファイル名書き直しに伴う変更のみのよう.詳細なdiffは追う気になれない・・・.

[新規]program_options

コマンドライン引数解析のためのライブラリ.

[未確認]python

未確認:後回し

[新規]range

「コンテナ」の概念を緩和した「範囲」の概念や,それに伴うイテレータ,インターフェース,型などの汎用プログラミングのための基盤整備.

[未確認]regex

http://www.boost.org/libs/regex/doc/faq.html

未確認:diffが多いが内容的な変更はなさげ・・・.

[新規]serialization

任意のデータ構造を可逆なバイト列(バイナリ・テキスト・XML等)に変換する操作,「シリアル化」のための機構を提供.

[新規]signals

「シグナル」と「スロット」によるコールバックの枠組みを提供.
っていうかsignalsって新規参入だったのね(´∀`;)

[機能追加]spirit

closure.html

BOOST_SPIRIT_CLOSURE_LIMITに関する注意書きが追加.

distinct.html(新規追加)

Distinct Parserの追加.

faq.html

"Parsing Ints and Reals"の追加.

predefined_actors.html

Associative container actorsにinsert_at_a(ref, key_ref, value_ref)insert_at_a(ref, key_ref)の各actorが追加.

rule.html

ruleにおけるmultiple scannerのサポートがデフォルトでoffになった.onにするにはBOOST_SPIRIT_RULE_SCANNERTYPE_LIMITにサポートしたいscannerの上限を定義する.

上と同様の記述が追加.

[新規]spirit/fusion

恐らく実験的な導入の段階か.readme.txtのみ.

[ドキュメント追加]static_assert.htm

http://www.boost.org/libs/static_assert/static_assert.htm#templates
BOOST_STATIC_ASSERTをテンプレート内部で使う場合に,BOOST_STATIC_ASSERTの条件部がテンプレート引数に依存していないとテンプレートのインスタンス化より先にBOOST_STATIC_ASSERTが評価される問題を指摘.それに対するwork-aroundも掲載.

[未確認]thread

ドキュメント全体がBoost.Book化したため,未確認.

[新規]tribool

「真」・「偽」・「不定」の3値を取るboolクラス.

[機能追加]type_traits

index.html

抽象クラスかどうかを判定するis_abstractの追加.(GCC 3.4, VC++7.1, Intel C++ 7.1, Comeau 4.3.2が対応.)

[機能追加]utility/base_from_member

base_from_member.html

コンストラクタテンプレートが対応する引数の最大値を決定するBOOST_BASE_FROM_MEMBER_MAX_ARITYマクロの追加.

[新規]in_place_factory(detail/in_place_factoryより格上げ)

コンストラクタの引数における暗黙の変換で生じる一時オブジェクトを削除するための汎用な機構.

[新規]result_of

関数ポインタ・関数参照・メンバ関数ポインタ・ファンクタの返り値を得るためのtraits.