新しいライブラリの情報は放置しておいてもいろんな人がぽこぽこ書いてくれるはずなので,自分は以前からの変更点を列挙するというニッチなことをしてみるテスト.
以下は/boost/libs以下のHTMLファイル(Boost.Book形式のドキュメントを持ったライブラリの場合はXMLファイル)全てを1.31.0と1.32.0でdiffして,それを概観した結果です.以下に挙げていないライブラリは少なくともドキュメント上の変更はありませんでした.
[新規]algorithm/minmax
minとmaxを同時に知りたい,あるいはコンテナ中の最小要素と最大要素を同時に知りたい場合の効率的なアルゴリズムの提供.
[新規]algorithm/string (string_algo)
文字列に関する各種アルゴリズムライブラリ.
[ドキュメント記述追加]array
次期TRの一部になる予定の旨と,初期化に関する記述が若干変更.
[新規]assign
定数や関数の戻り値をコンテナの要素として詰める際に非常に楽に書けるようにするライブラリ.
[仕様変更]concept_check
reference.htm
TrivialIteratorConcept
とMutable_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
[機能追加]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からの変更点のサマリを掲載.内容は上の通り.
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 );
へ.
operations.htm
2つのpathが同じディレクトリまたはファイルを指しているかどうかを判定するequivalent
関数の追加.
ファイルサイズを返すfile_size
関数の追加.
create_directoryが既存のディレクトリを作成しようとしたときに例外を投げるのをやめて代わりにboolを返すようになった.
[機能追加]function
http://www.boost.org/doc/html/function_base.html
target(), contains()の各メンバ関数の追加.boost::functionの各クラス(functionN, function)はこのクラスから派生しているので,それらにもこのメンバが追加.
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が多いので主要な変更だけ.
- overview.htmがoverview.htm,types_overview.htm,operations_overview.htmに分割
- Default Standard Mapの追加
- Scalar Vectorの追加
- Scalar Matrixの追加
- 疎行列に対する最適化された各種積演算APIの追加
- BLAS LEVEL 3の各演算の最適化APIの追加
[未確認]preprocessor
未確認:ファイル名書き直しに伴う変更のみのよう.詳細なdiffは追う気になれない・・・.
[新規]program_options
コマンドライン引数解析のためのライブラリ.
[未確認]python
未確認:後回し
[未確認]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化したため,未確認.
[機能追加]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より格上げ)
コンストラクタの引数における暗黙の変換で生じる一時オブジェクトを削除するための汎用な機構.