本家リリースノート:
https://svn.boost.org/svn/boost/website/public_html/live/feed/history/boost_1_50_0.qbkhttp://www.boost.org/users/history/version_1_50_0.html
新ライブラリ
- Algorithm
- 便利なジェネリックアルゴリズム集
- 作者:Marshall Clow
- Functional/OverloadedFunction
- オーバーロードされた複数の関数を単一の関数オブジェクトにまとめるライブラリ
- 作者:Lorenzo Caminiti
- LocalFunction
- ローカルな関数を他の関数内や任意のスコープ内で定義するライブラリ
- 作者:Lorenzo Caminiti
- Utility/IdentityType
()
でラップすることでマクロのパラメータとして渡せるようにするライブラリ- 作者:Lorenzo Caminiti
更新ライブラリ
- Accumulators
- Array
- Asio
- Bimap
- Chrono
- Concept Check
- Filesystem(+)
- Foreach
- Fusion(+)
- Geometry
- Graph
- Hash
- Iostreams
- Iterator
- MultiArray
- Lexical cast
- Locale
- Math
- Meta State Machine
- Program Options
- PropertyMap
- Proto
- Ratio
- ScopeExit
- Spirit
- Thread
- Unordered
- Wave
- Xpressive
+が付いているものは本家のリリースノートには記載されていない変更。
Accumulators
- インクルードが抜けていたのを修正(#6702)
- MSVCでコンストラクタの転送がコンパイルエラーになっていたのを修正(#6535)
- Boostの開発者ガイドラインに従い、ファイル名を短くした(#6196)
- ※ファイル名は31文字以下でなければならない:
boost/accumulators/statistics/p_square_cumulative_distribution.hpp
→boost/accumulators/statistics/p_square_cumul_dist.hpp
boost/accumulators/statistics/weighted_p_square_cumlative_distribution.hpp
→boost/accumulators/statistics/weighted_p_square_cuml_dist.hpp
Array
- Boost.Hashのサポートを追加 (#6791)
Asio
EPOLL_OUT
イベントのために、epoll_reactor
のバックエンドを遅延登録するよう変更epoll_reactor
の帯域外データが、前回のリリースでは不完全な修正によって壊れていたので修正した- Boost.AsioのSSLラッパーを、
OPENSSL_NO_ENGINE
のdefineに配慮するよう修正(#6432) - C++11のムーブセマンティクスをサポートするWindowsコンパイラ(g++など)のために、
windows::object_handle
を修正 strand
の再スケジューリングのパフォーマンスを向上- g++4.7のC++11モードでのコンパイルをサポート(#6620)
- g++4.7で名称が変更になった
std::chrono::monotonic_clock
→std::chrono::steady_clock
の差異に対応
- g++4.7で名称が変更になった
io_service
がconcurrency_hint
を1
で構築した場合に、signal_set
が配信されない問題を修正(#6657)
Bimap
- 怪しいBoost.Serializationへの依存を削除 (#3868)
- 未使用変数の警告を修正 (#5749)
map views
にkey_type
とmapped_type
のtypedef
を追加(#6031)- ただし後方互換性のために
data_type
は残してある
- ただし後方互換性のために
Chrono
boost::chrono::process_real_cpu_clock::now()
が32ビット版Windowsでオーバーフローする問題を修正(#6361)process_cpu_clocks.hpp
の警告を修正(#6628)thread_clock.hpp
でpthread.h
のインクルードが抜けていたのを修正(#6666)
Concept Check
- 変数シャドウの警告を修正 (#6738)
Filesystem(+)
- 非推奨だったv2を削除。v3への完全移行が必要
Foreach
- 修正の結果、より問題が発生したため #6131 の修正を取り消した
Fusion(+)
deque
,front_extended_deque
,back_extended_deque
のドキュメントを追加
Geometry
バグ修正
- 整数の点のための
projected point strategy
の戻り値型が間違っていたので修正 - セグメントとポリゴンの交差でのいくつかの信頼性問題を修正
- 無効な交差点を出力から除外した
multi_polygon
のdisjoint
が、不正にtrue
を返してしまう問題を修正
解決したチケット
- multi pointの代替シンタックスパッチを適用(#6585)
"MULTIPOINT ((10 40), (40 30), (20 20), (30 10))"
と"MULTIPOINT (10 40, 40 30, 20 20, 30 10)"
のどちらでも書けるようになった
point
とlinestring
のdistance
計算が間違っていたので修正(#6584, #5730)- デカルトの3次元座標から球状の赤道3次元座標への変換を行うパッチを適用(#6166)
- 無効な交差点が出力されてしまう問題。報告より前にtrunkで修正されていた(#6696)
新機能
*polygon
/*polygon
のための新たなアルゴリズムtouches
を追加(OGC SF準拠)
Graph
バグ修正
clear_vertex
が自己閉路のvertex
でセグメンテーションフォルトする問題を修正(#4622)biconnected_components()
によるlowpoint map
の計算が間違っていたので修正(#6033)isomorphism()
関数で、Iso Mappingがリセットされない問題を修正(#6242)cube_topology
のドキュメントに、3次元なのに2次元と書かれていたので修正(#6435)graph_parallel
のドキュメントにあるsmall_world_1_70_6_0p02.png
が壊れていたので修正(#6520)subgraph
のコピーコンストラクタがlocal_vertex
/local_edge
プロパティをコピーしていなかったので修正(#6564)isormorphism()
関数に巨大なグラフを与えると計算に失敗する問題を修正(#6573)Dijkstra Visitor Concept
のドキュメントにあったtypoを修正(#6583)"DistanceMap"
→"WeightMap"
strong_components()
がMSVC8でコンパイルエラーになる問題を修正(#6647)subgraph
の実装で、依存名にtypename
が付いていなかったので修正(#6656)is_straight_line_drawing.hpp
で<map>
のインクルードが抜けていたので修正(#6707)is_straight_line_drawing.hpp
のboost::intersects()
関数でシンボルの重複エラーが出ていたのでinline
を付けた(#6708)constified subgraph
をwrite_graphviz_dp()
を使用して出力できない(コンパイルエラーになる)問題を修正(#6739)- reverse_graphに対するboost::get()がg++でコンパイルエラーになる問題を修正(#6858)
- bron_kerbosch_all_cliques()はVertexIndexGraphConceptを満たす必要がないので要件を削除(#6892)その他、Tracに含まれていないいくつかの警告とバグを修正
Hash
std::array
とstd::tuple
のサポートを追加 (#6806)- GCCにおける
-Wfloat-equal
警告を修正 (#6771) boost/functional/detail/container_fwd.hpp
に非推奨である旨の警告を追加
Iostreams
Iterator
transform_iterator
のドキュメントでのresult_of
の使い方が正しくなかったのを修正 (#5127)iterator_facade::operator->
がproxy referencesに対して正しくなかったのを修正 (#5697)
MultiArray
Lexical cast
boost::bad_lexical_cast
例外は現在グローバルに見えるので-fvisibility=hidden
でコンパイルされていてもキャッチできる- 例外を無効にしていてもコンパイル、使用が可能になった (#5800)
boost::iterator_range<character_type*>
の変換に対してメモリ使用量を減らしバグを修正しパフォーマンスを改善した- バグと警告の修正 (#6645) (#6562) (#6812) (#6852) (#6717) (#6770) (#6504)
Locale
- STLPortを使用した場合でのビルドの問題を修正
- Boost.Systemが依存ライブラリとなった
バグ修正
Math
- 数学定数を第1級クラスに:ビルトインへの便利なアクセス方法も含む
- Benjamin Sobottaにより、OwenのT関数とSkew標準分散を追加
- Hankel関数を追加
- K R Walkerのパッチをベースにして
0.0
におけるnonfinite_num_put
のフォーマットを修正 (#6627) - ユーザー定義型でもスレッドセーフになるように定数初期化メカニズムを変更、また
long double
型でなくともユーザー定義型の定数が最大精度を得られるように変更例えばlong double
が64または80bitであっても、128bit有理数への近似がユーザー定義型で動作する Y[sub 8.5](4π)
でbessel_iy
関数がNaN
になってしまう問題を修正
Meta State Machine
- eUML : eUMLで遷移表としてのみ定義されたフロントエンドのためのよりよい構文。
- バグ修正: グラフ構築がシーケンスとして定義されたinitial_stateでのみ動作していた
- バグ修正:
Terminate
かInterrupt
状態のために定義されたフラグが、これらの状態のブロッキング関数を壊さないようにした - バグ修正: いくつかの領域からの多重遅延イベント(multiple deferred event)が、全てのケースで動作するとは限らなかった
- バグ修正:
visitor
が、サブマシンに値渡しを行っていた - バグ修正:
no_transition
が、それ自身にイベントを送るサブマシンのためには呼ばれなかった - GCCの警告を修正
Program Options
- エラーレポートの強化(Leo Goodstadt氏のPatch)
- ヘルプメッセージ中のオプション値の名前のカスタマイズをサポート (#4781)
- GCC4.7でのコンパイルエラーを修正 (#6790)
PropertyMap
バグ修正
- ドキュメント中の
get()
の戻り値が正しくなかったのを修正 (#6539) property_map_traits
のドキュメントがreference
に関して記述されていなかったのを修正 (#6721)
Proto
- N3276を実装しているコンパイラにかぎり、
decltype
ベースのresult_of
を使うようにした - C++11向けに,
mpl::eval_if_c
とmpl::if_c
の評価型が強制的にbool
になるようにした __forceinline
による、「指定された関数がインライン展開の対象として選択されましたが、実際にはインライン展開されませんでした。」という警告がmsvcで出ないようにした
Ratio
バグ修正
boost::ratio
がデフォルト設定でコンパイルされない問題を修正(#6498)
ScopeExit
新機能
- キャプチャにカンマ区切りリストを使用できるように可変長マクロを使用 (後方互換性のためにシーケンス構文でのキャプチャもサポート)
this_
の使用によるオブジェクトのキャプチャをサポートvoid
の使用による空のキャプチャをサポート- コンパイラがC++11のlambdaをサポートする場合、
BOOST_SCOPE_EXIT_ALL
で暗黙的なlambdaに似たキャプチャをサポート
Spirit
- 廃止予定だったヘッダを除去した。このヘッダは2,3年間そのままだったが、そろそろクリーンアップの時期になったからである。
Thread
新機能
lock_guard
/unique_lock
に対応するunlock_guard
のリクエスト(#1850)shared_mutex
にtimed_lock
とtimed_lock_shared
メンバをリクエスト(#2637)- ポータブル及びポータブルではないスレッド属性の対応の提案(#2741)
shared_lock_guard
のリクエスト(#3567)- Boost.Moveベースのムーブセマンティクスへの変更(#6194)
- 時間関係のインターフェースをBoost.Chronoで実装(#6195)(C++11標準への追従)
- Howard Hinnantが提案したインターフェースに
shared_mutex
を拡張(#6217) noexcept
をコンパイラがサポートしている場合noexcept
を指定(#6224)(C++11標準への追従)locks
に明示的なbool
型への変換を追加(#6226)(C++11標準への追従)promise
にアロケータ指定可能なコンストラクタを追加(#6228)(C++11標準への追従)- C++11標準で定められた例外の通知方法に変更(#6230)(C++11標準への追従)
thread
のデストラクタはjoinable
がtrue
を返す場合にterminate
を呼ぶ様に変更(#6266)(C++11標準への追従)(破壊的変更)→ デフォルトではこれまで通りのdetach
動作。BOOST_THREAD_PROVIDES_THREAD_DESTRUCTOR_CALLS_TERMINATE_IF_JOINABLE
をdefine
することで新しい動作に切り替えることができる。thread
はムーブ代入時にjoinable
がtrue
を返す場合にterminate
を呼ぶように変更(#6269)(C++11標準への追従)(破壊的変更)→ デフォルトではこれまで通りの動作。BOOST_THREAD_PROVIDES_THREAD_MOVE_ASSIGN_CALLS_TERMINATE_IF_JOINABLE
をdefine
することで新しい動作に切り替えることができる。thread::id
用のhash
の特殊化を用意(#6272)(C++11標準への追従)- 条件変数の
wait
系関数用のcv_status
列挙型を追加(#6273)(C++11標準への追従) - ドキュメントに
BasicLockagle
要件に関する記述を追加(#6231)(C++11標準への追従) - C++11標準向けに
once_flag
を修正(#6342) upgrade_lock
にmutex
とrelease
メンバが不足していたのを修正(#6671)upgrade_lock
に時間をメンバに取るコンストラクタが不足していたのを修正(#6672)upgrade_lock
用のフリー関数版swap
が無かったのを修正(#6675)packaged_task
にresult_type
とアロケータを取るコンストラクタが不足していたのを修正packaged_task::reset()
を追加
バグ修正
- Itanium環境でリンク等に失敗する(#2575)
thread
をカスケードした状態でthread::id
を使用しながらjoin
すると適切にjoin
されない(#4345)BOOST_THREAD_USE_DLL
及びBOOST_THREAD_USE_LIB
は重大であるにもかかわらずアンドキュメントである(#4921)thread
中でpthread_exit
を呼ぶとterminate
が呼ばれるのをドキュメント化(#5013)this_thread::get_id
が非常に遅い(#5173)future
をinterrupt
するとunknown_exception
が投げられる(#5351)- read lockが行われている状態で前の
upgrade_lock
が解放を行ってもupgrade_lock
が取得を行わない(#5516) shared_future<T>::get()
が正しくない戻り値型になっている(#5990)packaged_task
がムーブした結果を受け取る事ができない(#6174)- SunStudioにおいて
unique_future
のムーブがコンパイルエラーになる(#6222) - C++11環境で
shared_lock
のムーブ代入が正しく動作しない(#6673) shared_mutex
のtry_lock_upgrade_until
が正しく動作しない(#6674)- ML上で指摘された
task_object
のムーブコンストラクタの存在下でtask_object
のコピーコンストラクタが削除される問題を修正
Unordered
unordered_multiset
とunordered_multimap
の等価比較関数を修正reserve
を実装 (#6857)- GCCの
-Wfloat-equal
と-Wshadow
による警告を修正 (#6190) (#6771) - bcpで正しく展開されない名前空間の問題を修正 (#6905)
- SunStudio12.3でのコンパイルエラーを修正 (#6784)
- Bucket allocationのために内部の一部を変更
- すべての変更点は /doc/html/unordered/changes.html#unordered.changes.boost_1_50_0 を参照のこと
Wave
V2.3.2
- 一部のメンバを
base_iteration_context
コンストラクタで初期化していなかった問題を修正 (#6758) force_include
で追加したインクルードファイルが#line
ディレクティブを失敗させる問題の修正 (#6838)- testwave に
--forceinclude
オプションのテスト用サポートを入れて,#6838 の修正確認のためのテストケースを追加 - wave ドライバのビルドに失敗するのを修正 (#6870)
Xpressive
- 非常に醜い
lexical_cast
ハックをまぁ我慢できるものに置きかえた - C++11で問題になるMPL
assert
をstatic assert
に置きかえたことで、 #6846 が修正された。
テスト済みコンパイラ
- Linux
- Intel: 11.1
- LLVM Clang: 2.8
- GCC: 4.2.4, 4.3.4, 4.4.3, 4.5.3, 4.6.2
- GCC, C++0x mode:4.3.4, 4.4.3, 4.5.4, 4.6.2
- OS X
- Intel: 11.1
- GCC: 4.4.4
- GCC, C++0x mode: 4.4.4
- Windows
- Visual C++: 8.0, 9.0, 10.0
- GCC, mingw: 4.4.0, 4.4.7, 4.5.4, 4.6.1, 4.7.0
- FreeBSD
- GCC: 4.2.1 (32/64bit)
- QNX
- QCC, C++0x mode: 4.4.0, 4.4.7, 4.5.4, 4.6.3, 4.7.0
追加のテスト済みコンパイラ
- Linux
- LLVM Clang: subversion
- GCC: 4.2.4, 4.3.4, 4.4.4, 4.5.3, 4.6.2
- GCC, C++0x mode: 4.3.4, 4.4.4, 4.5.3, 4.6.2
- pgCC: 11.9
- Intel: 10.1, 11.1, 12.0, 12.1
- Visual Age: 10.1
- OS X
- LLVM Clang: subversion
- Intel: 11.1, 12.0
- GCC: 4.4.4
- GCC, C++0x mode: 4.4.4
- Windows
- Visual C++: 8.0, 10.0
- Visual C++ with STLport: 9.0
- Visual C++, Windows Mobile 5 with STLport: 9.0
- GCC, mingw: 4.4.0, 4.4.7, 4.5.2, 4.5.4, 4.6.4, 4.7.0
- GCC, C++0x mode, mingw: 4.5.2
- AIX
- IBM XL C/C++ Enterprise Edition, V12.1.0.0
- FreeBSD
- GCC: 4.2.1 (32/64bit)
- Solaris
- Sun: 5.10
翻訳
Akira Takahashi, zak, Flast, DigitalGhost