本家リリースノート:
新ライブラリ
- Atomic
- Helge Bahmannによる、C++11スタイルの
atomic
ライブラリ。Tim Blechmannによってメンテナンスされる。
- Helge Bahmannによる、C++11スタイルの
- Coroutine
- Oliver Kowalkeによるコルーチンライブラリ
- Lockfree
- Tim Blechmannによるロックフリーデータ構造
- Multiprecision
- John MaddockとChristopher Kormanyosによる、拡張精度の算術型演算(浮動小数点数型、整数型、有理数型)。
- Odeint
- Karsten AhnertとMario Mulanskyによる、常微分方程式ライブラリ
更新ライブラリ
- Array
- Algorithm
- Asio
- Bimap
- Container
- Context
- Geometry
- GIL
- Graph
- Hash
- Interprocess
- Intrusive
- Lexical Cast
- Locale
- Math
- MinMax
- Move
- Polygon
- Random
- Range
- Ratio
- Regex
- Smart Pointers
- String Algo
- Thread
- Unordered
- Utility
- Variant
- Wave
- Xpressive
更新ツール
Array
boost::get
とstd::get
をサポート(#7652)
Algorithm
Asio
- いくつかの64ビットから32ビットへの変換警告を修正(#7459)
- ドキュメントとコメントの小さな間違いを修正(#7761)
basic_socket::get_option()
のドキュメントにある例で、古い関数を使用していたので修正(#7562)- OpenSSLに合わせて、
SSL_CTX
に使用する型をlong
からint
に変更(#7209) - 最近のMinGWバージョンでは、
_snwprintf
がコンパイルエラーとなるため、swprintf
を使用するようにした(#7373) - Windows上で
io_service
のスレッドプールをシャットダウンするときに、デッドロックする問題を修正(#7552) noexcept
修飾子を使うようにした(#7797)- UNIXドメインソケットの例で、
accept
が致命的なエラーにならないよう修正した(#7488) - デフォルトメモリアロケーションの振る舞いを改善するために、小さいブロックの再利用をする最適化を追加
Bimap
- エラーメッセージを改善するために、
map_view_iterator
をリファクタ - 情報で比較する際の
replace_
(left
/right
/key
/data
)のバグを修正 vector_of
ビューとlist_of
ビューのassign(size_type,value_type)
のバグを修正vector_of
ビューのoperator[](size_type)
とat(size_type)
の戻り値を修正
Chrono
非推奨
- Boost.Chrono 1.2.xに含まれていたchrono i/oを、2.0で完全にリファクタリングした
- chrono i/o :
duration_short
、duration_long
マニピュレータを非推奨にした。その代わりに、パラメータ付きのフォーマットマニピュレータであるduration_fmt
、もしくは名前変更したマニピュレータであるduration_symbol
、duration_prefix
を使用すること。 - chrono i/o :
duration_punct<>
ファセットを非推奨にした。代わりに、情報取得のためにget_duration_style
フリー関数、ローカライズのためにduration_units
ファセットを使用すること。 BOOST_CHRONO_VERSION==2
とした場合、非推奨機能は使用できない。
バグ修正
time_point<system_clock>
の出力バージョンがコンパイルに失敗する問題を修正(#7546)time_point<system_clock>
の入力バージョンがコンパイルに失敗する問題を修正(#7547)- chrono i/oで時間の解析が不完全だった問題を修正(#7868)
Container
list::const_iterator
のoperator->()
がコンパイルエラーになる問題を修正(#7650)vector
の挿入パフォーマンスを改善- パフォーマンス向上のために、実験的にマルチアロケーションのインタフェースを再度変更(まだ実験)
- 例外無効化の環境に対応
- GCCの
-Wshadow
警告を修正 - 非推奨マクロ
BOOST_NO_XXXX
の代わりにBOOST_NO_CXX11_XXX
を使用するよう置き換えた
Context
- ARMのiOS、x86(32ビット)のMacOS Xのサポートを追加
- Win32のSEH上書き保護サポートを追加
Geometry
バグ修正
- 内部リングが最小サイズ以下の場合(たとえば、1か2個の点)に、ポリゴンの生成を回避するようにした
geometry::disjoint
へのセグメント縮退(Karsten Ahnertによるパッチ)geometry::difference
で、正接のハンドリングが不足していた問題を修正(H2からの報告)geometry::for_each
でのラムダを使用を修正geometry::comparable_distance
のpoint-linestring
、point-range
、point-polygon
を修正
新機能
geometry::disjoint
の組み合わせ:point
/ring
,point
/polygon
,point
/multi_polygon
geometry::intersects
の組み合わせ:point
/ring
,point
/polygon
,point
/multi_polygon
内部的な変更
- 様々なアルゴリズムの特殊バージョンと未実装バージョンを更新(以前のバージョンから引き続いての変更。これらは構造を簡略化し、より良いエラー報告をし、ドキュメント化の自動的に行う)
GIL
- 自己代入の警告を修正(#4919)
Graph
バグ修正
kolmogorov_max_flow()
がmax flow値を見つけてこない問題を修正(#3468, #7728)- アルゴリズムの要件が間違っていたので修正(#4386)
depth_first_search()
に、on_finish_edge
イベントを追加(#5269)- 未使用変数警告を修正(#7428)
kamada_kawai_spring_layout.hpp
のコメント誤字を修正(#7457)graph
/reverse_graph.hpp
の不要なセミコロンを削除(#7467)named_graph
に対するadd_vertex()
関数のオーバーロードが曖昧になる問題を修正(#7600)boost/graph/labeled_graph.hpp
内の誤字を修正(#7648)boost/graph/tiernan_all_cycles.hpp
内の誤字を修正(#7684)Graph
コンセプトの、必須ではない関連型を要件から削除(#7741)small_world_iterator
のドキュメントに、デフォルト引数が記載されていない(#7771)inserted_labeled_vertex()
でプロパティが追加されていなかったのを修正(#7773)- Push Relabel Max Flowのドキュメント上のサンプルにあった誤字を修正(#7780)
Graph
コンセプトのドキュメントで、examples/undirected.cpp
へのリンクが切れていたのを修正(#7787)- その他、Tracにないいくつかのバグ修正
機能追加
- 複数のグラフを含むGraphMLの読み込みをサポート
A*
検索の新バージョンを追加。具体的にはツリーや、同じ頂点を何度も通ることを許可するために、必要ならカラーマップを削除する。- VF2 subgraph isomorphismアルゴリズムを追加(Flavio De Lorenziに感謝する!)
Hash
- 利用可能な環境で
boost::int128_type
とboost::uint128_type
のサポートを追加 - プラットフォームが標準の浮動小数点数関数を持っている場合は、自動推論を使用しないようにした(#7221, #7470)
Interprocess
- GCCの
-Wshadow
警告を修正 - パフォーマンス向上のために、実験的にマルチアロケーションのインタフェースを再度変更(まだ実験)
- 非推奨マクロ
BOOST_NO_XXXX
の代わりにBOOST_NO_CXX11_XXX
を使用するよう置き換えた - [ABI破壊] 効率改善のため、ノードプールアロケータを内部的に変更
- ファイルマッピングのデータ構造を作る際、小さいサイズを指定するとクラッシュする問題を修正(#7795)
Intrusive
- GCCの
-Wshadow
警告を修正(#7174) - 等値キーの要素が挿入される位置についてドキュメントに記載(#7529)
boost/intrusive/detail/has_member_function_callable_with.hpp
でのコンパイルエラーを修正。const
付きの型を継承していた(#7815)- 侵入コンテナのコンストラクタに、不足していた
explicit
を付けた - 非推奨マクロ
BOOST_NO_XXXX
の代わりにBOOST_NO_CXX11_XXX
を使用するよう置き換えた
Lexical Cast
- ユーザー定義クラスのための、新たな文字型(
char16_t
/char32_t
)検出アルゴリズム(#6786) - ドキュメント更新(#7582, #7831)
std::array
の変換が、最適化の効かない書き方になっていたので修正(#7799)- g++で
-ftrapvオプション
(trap overflow errors : オーバーフローを検知してabort()
させる)をつけるとエラーになるケースを修正(#7814)
Locale
- セキュリティ関連のバグ修正。いくつかの不正なUTF-8シーケンスを、有効なものとして受け入れていた(#7743)
- Windowsのコードページ名として不正な名前を使用していたので修正(#7386)
- Doxygenのフォーマットミスによって、ドキュメントが不足していたので修正(#7734)
- いくつかの場所で
std::
指定が抜けていたので修正(#7701) - いくつかの誤字と、英語の構文を修正(#7368, #7762)
Math
- 問題点の修正:
- Lanczos近似の背景ドキュメントの誤字を修正(#7325)
atanh()
の正の値を渡した場合、domain_error
例外が送出されるべきだが、overflow
例外が送出されていたので修正(#7415)asinh()
のエラーポリシーとしてignore_error
を設定していても、大きな負数を渡すとoverflow
例外が送出されてしまう問題を修正(#7416)- FBSD環境での
isinf()
のコンパイルエラーを修正(#7183) boost/math/constants/calculate_constants.hpp
ヘッダのコメント誤字を修正(#7649)math/minimax/main.cpp
に、インクルードするヘッダが足りていなかったので修正(#7694)float_advance()
に非正規化数として0を設定するとスタックオーバーフローする問題を修正(#4445)- libc++でコンパイルが通らない問題を修正(#7492)
- two-sample students tの例が間違っていたので修正(#7402)
complex
のacos
/asin
/atan
を改善(#7290, #7291)cyl_bessel_j
とgamma_p
/gamma_q
のいくつかのコーナーケースで精度を改善。Rocco Romeoに感謝する。- 整数でのベッセルJとYの精度を改善。Rocco Romeoに感謝する。
MinMax
Move
boost/move/move.hpp
に全ての機能を入れていたので、core.hpp
とutility.hpp
に分離した(#6524)- ドキュメントの小さな修正
- 非推奨マクロ
BOOST_NO_XXXX
の代わりにBOOST_NO_CXX11_XXX
を使用するよう置き換えた uninitialized_move()
の実装に、例外のチェックが抜けていた(#7830)- マクロの不足と間違いを修正(#7832)
Polygon
修正
boost::polygon::contains()
が、含まれていてもfalse
を返す場合があったのを修正(#6366)boost::polygon::belongs()
の、ODR違反によるリンクエラーを修正(#7678)
内部的な変更
point
/segment
/interval
とdata
/concept
/traits
をリファクタpoint
とdata
/concept
/traits
区間のユニットテストを追加transform.hpp
の2次元操作を簡略化point_3d data
/concept
/traits
を削除
Random
- 例外が無効な状態で、コンパイルが通るように修正(#5399)
Range
range/any_range.hpp
にインクルードが不足している問題を修正(#5603)search_n
の実装詳細名前空間がboost::range::range_detail
になっていたので、他に合わせてboost::range_detail
に修正(#6103)- いくつかのドキュメント修正
Ratio
- クラステンプレート
br_mul
のメンバ変数nan
の初期値のシフト演算において、シフトカウントがマイナスになったり、大きすぎる数になった場合に、未定義動作を引き起こすという警告が発生する問題を修正(#7616)
Regex
Smart Pointers
新機能
- Glen Fernandes氏による、配列用の
make_shared
とallocate_shared
実装を取り込んだ。これにより、デフォルト初期化と値なし初期化についてのオーバーロードと同じく、コンストラクタ実引数かinitializer listで初期化されうる配列についてのシングルアロケーションが可能になった。詳細はこちら[/libs/smart_ptr/make_shared_array.html make_shared and allocate_shared for arrays]を参照のこと。 shared_ptr
を、配列へのポインタを保持できるようにした。これには、テンプレートパラメータで配列型(T[]
もしくはT[N]
)を指定する。- C++11コンパイラでは
explicit operator bool()
を使用するようにした。これは、以下のようなケースでコードを破壊する: 1.bool
をとる関数にスマートポインタを渡しているコード 2.bool
を返す関数でスマートポインタを返しているコードこのようなケースでは、p != 0
もしくは!!p
を使用してください - [追加リリースノート] だいぶ前から非推奨だった
shared_ptr
のvalue_type
を削除した。代わりにelement_type
を使用すること。
String Algo
Thread
廃止された機能
- boost 1.53で廃止された機能はboost 1.58までは利用可能である
- C++11準拠:
packaged_task<R>
を廃止した。以降はpackaged_task<R()>
を使うこと Mutex::scoped_lock
、scoped_try_lock
、boost::condition
を廃止にした(#7537)
新機能
- C++11準拠: ムーブ可能な関数オブジェクトと実引数をとれる
thread
コンストラクタを追加(#6270) - C++11準拠: システムまわりの関数に
noexcept
をつけた(#7279) - C++11準拠:
promise
::…at_thread_exit
関数を追加(#7280) - C++11準拠:
packaged_task
テンプレートにArgTypes
を追加(#7281) - C++11準拠:
packaged_task::make_ready_at_thread_exit
関数を追加(#7282) - C++11準拠: ムーブ可能な関数オブジェクトと実引数をとれる
async
を追加(#7412) - C++11準拠:
launch
ポリシーがdefferred
のとき、async
を追加する(#7413) - C++11準拠:
future::get
の事後条件がvalid()==false
になるようにした(#7414) - ゼロオーバーヘッドな
condition_variable
を提供(#7422) - Async:
make_future
とmake_shared_future
を追加(#7444) - Thread: デストラクタで
thread
をjoin
するヘルパークラスを追加(#7540) - Thread: デストラクタで
thread
をjoin
するthread
のラッパークラスを追加(#7541) - C++11準拠:
async
で作成したfuture
がデストラクタでjoin
するようにした(#7575) - Synchro:
strict_lock
とnested_strict_lock
を追加(#7587) - Synchro: 依存関係を制限するために
locks.hpp
を分割した(#7588) - Synchro: Boost.ConceptCheckを利用して"ロック可能コンセプト"チェッカーを追加した(#7590)
enable_if
で使える"ロック可能トレイト"を追加(#7591)- Synchro: なにもしない、
UpgardeLockable
コンセプトに適合するnull_mutex
を追加(#7592) - Synchro:
externally_locked
クラスを追加(#7593) - Threads: スレッド中断禁止設定を追加(#7594)
バグ修正
- 回帰テストツールで、データ競合によって
BOOST_TEST(n_alive == 1);
が失敗する問題を修正(#7464) condition_variable::generations
メンバ関数がnotify_one
かnotify_all
を呼び続ける状態になり、メモリー消費とパフォーマンスに甚大な影響を及してしまう(#7657)- スレッド内で
this_thread::sleep_for
はもうsteady_clock
を使わない(#7665) thread_group::join_all()
はthread
がjoin
可能かチェックすべき(#7668)thread_group::join_all()
はresource_deadlock_would_occur
をcatch
すべき(#7669)lockable_traits.hpp
の"defined"トークンがtypoしている(#7672)boost::future
のset_wait_callback
のスレッドセーフ問題(#7798)this_thread::sleep_for
とthis_thread::sleep_until
の説明が正しくない(#7808)cv_status::no_timeout
がrel_time
で指定した時間を越えたときに返却されている。cv_status::timeout
であるべき(#7812)thread::id
に、シンボル可視の属性が付いていなかったことによる警告を修正(#7874)BOOST_THREAD_THROW_IF_PRECONDITION_NOT_SATISFIED
をデフォルトで有効にするよう修正(#7875)condition_variable::wait(unique_lock<mutex>&)
で発生する例外のメッセージが不適切だったので修正(#7882)thread::do_try_join_until()
に戻り値の型が抜けていたので修正(#7890)
Unordered
- 標準以前の古いvariadic pairコンストラクタのサポートを外し、同等の実装をしなおした。いずれもBoost 1.48からdeprecated指定である。
erase
のより単純な実装の導入や、deprecated指定されていたコンフィグマクロの除去など、内部実装をさらに変更した。
Utility
- 文字列への所有権を持たない参照を保持する
string_ref
クラスを追加
Variant
Wave
context<>::add_macro_definition
がマクロ置換リストにまれに余計なT_EOF
を追加する問題を修正
Xpressive
- 最近のスマートポインタに対応するための修正(#7809)
Build
- Qt5ツールセット
- rccサポートを改善(#7576)
テスト済みコンパイラ
- Linux:
- GCC: 4.1.2, 4.2.4, 4.4.4, 4.5.3, 4.6.3, 4.7.2
- GCC, C++11 mode: 4.4.4, 4.5.3, 4.6.3, 4.7.2
- Intel: 11.1, 12.1
- LLVM Clang: 2.8
- LLVM Clang, with libc++: 3.2
- OS X:
- GCC: 4.4.7
- GCC, C++11 mode: 4.4.4
- Intel: 11.1, 12.0
- Windows:
- Visual C++: 9.0, 10.0
- FreeBSD:
- GCC: 4.2.1, 32 and 64 bit
追加のテストコンパイラ:
- Linux:
- Cray: 4.6.1
- Clang: from subversion
- LLVM Clang, with libc++: 3.2
- GCC: 4.2.4, 4.4.4, 4.5.3, 4.6.3, 4.7.1
- GCC, C++11 mode: 4.4.4, 4.5.3, 4.6.3, 4.7.1, 4.7.2
- pgCC: 11.9
- Intel: 10.1, 11.1, 12.1
- Intel, C++11 mode: 13.0.1
- Visual Age:
- OS X:
- Clang: from subversion
- Clang, C++11 mode: from subversion
- Intel: 11.1, 12.0
- GCC: 4.4.7
- GCC, C++11 mode: 4.4.4
- Windows:
- Visual C++: 10.0, 11.0
- Visual C++ with STLport: 9.0
- Visual C++, Windows Mobile 5, with STLport: 9.0
- AIX:
- IBM XL C/C++ Enterprise Edition: V12.1.0.1
翻訳
Akira Takahashi, Takatoshi Kondo, zak