本家リリースノート:
- https://github.com/boostorg/website/blob/master/feed/history/boost_1_61_0.qbk
- http://www.boost.org/users/history/version_1_61_0.html
リポジトリは以下:
リポジトリからのビルド方法は、egtraさんのブログを参照:
新ライブラリ
-
- 並列及びGPU計算のためのライブラリ
-
- DLLとDSOを容易に扱うためのライブラリ
- プラットフォームを横断した次の様な操作を提供する
- ライブラリをロードする
- 任意の関数や変数をインポートする
- マングリングされた関数やシンボルへのエイリアスを作成する
- セクションやエクスポートされたシンボルを問い合わせる
- 自身をロードしたり自身に問い合わせる
- エクスポートされたシンボルからプログラムやモジュールの場所を取得する
-
- C++14以降必須
- 近代的なC++のメタプログラミングライブラリ
- 高水準での異種型シーケンスへのアルゴリズムを提供する
- 自然な構文での型レベルでの計算や、ユーザー定義型への操作可能にする
-
- C++11以降必須
- コンパイル時構文解析器をコンパイル時に構築するためのライブラリ
- Spiritに似ているが、Spiritがコンパイル時にパーサを構築し実行時にパースするのに対し、Metaparseはコンパイル時に構築しパースも実施する
更新ライブラリ
- Any
- Container
- Context
- Coroutine
- Coroutine2
- Fusion
- Geometry
- Interprocess
- Intrusive
- Lexical-Cast
- Log
- Math
- Move
- Multiprecision
- Optional
- Regex
- Test
- Variant
Any
- テストの追加とメンテナンスの為の修正
Container
small_vector
に、以下のコンストラクタを追加:small_vector(size_type n, default_init_t)
small_vector(size_type n, default_init_t, const allocator_type &a)
small_vector(size_type n, const value_type &v)
small_vector(size_type n, const value_type &v, const allocator_type &a)
template <class InIt> small_vector(InIt first, InIt last)
template <class InIt> small_vector(InIt first, InIt last, const allocator_type& a)
small_vector
に、基本クラスのオブジェクトを受け取るコンストラクタと代入演算子を追加。これによって異なる初期要素数のテンプレートパラメータを持つsmall_vector
同士で変換ができるようになる:explicit small_vector(const small_vector_base &other)
explicit small_vector(small_vector_base&& other)
small_vector& operator=(const small_vector_base &other)
small_vector& operator=(small_vector_base&& other)
- バグ修正
- Trac #11820
map::operator[ ]
を使用した際のコンパイルエラーを修正 - Trac #11856 typedef名がクラス名と衝突していたために、
pool_resource
でのコンストラクタ呼び出しがコンパイルエラーになっていた問題を修正 - Trac #11866
small_vector
が範囲をとるコンストラクタを持っていなかったので追加 - Trac #11867 異なる初期要素数のテンプレートパラメータを持つ
small_vector
同士で変換ができなかったため、変換コンストラクタを追加 - Trac #11912
vector
のexpand_backwardsで、同じソースをムーブする可能性があったので修正 - Trac #11957
static_vector::max_size()
がキャパシティより大きかった問題を修正 - Trac #12014
set::insert()
で、const_iterator
の範囲を挿入しようとすると、オーバーロード解決があいまいでコンパイルエラーとなる問題を修正 - GitHub #33
throw_exception()
でstd::string
を使用できるよう、インクルードを追加。標準の<stdexcept>
をインクルードするだけでは、std::string
は前方宣言しかされない場合があるため。
- Trac #11820
Context
- #11246 未定義のシンボルがあったためMinGWでビルドできなかった問題を修正
- #11365 VS2015RCにおいて、execution_context.hppでエラーが発生していた問題を修正
- #11652
__cpp_lib_integer_sequence
を確認するようにした - #11946 x86_64/MinGW環境でクラッシュする問題を修正
- fcontext_t: 公開APIではなくなった
- WinFiber APIのサポートを削除した
- 以下、メーリングリストでの議論 : [Coroutine] What happened to WINFIBERS?
- execution_context: 仕様要求レベルをC++14からC++11に引き下げ
- execution_context: 新しい実装を追加した
- 型安全にデータを転送可能
- スタックの先頭で関数が実行される
- パフォーマンスを改善
- 静的メンバの
current()
は削除された - 訳者注: これまでの実装(version 1)と新しい実装(version 2)はクラス名が同一だが互換は無い
Coroutine
- 浮動小数点数レジスタに関するアトリビュートを削除
- 訳者注: Boost.Contextで浮動小数点数レジスタの保存を制御できなくなったことにより、浮動小数点数レジスタは常に保存されなくなった
Coroutine2
- 浮動小数点数レジスタに関するアトリビュートを削除
- 訳者注: Boost.Contextで浮動小数点数レジスタの保存を制御できなくなったことにより、浮動小数点数レジスタは常に保存されなくなった
- パフォーマンスを改善
- 仕様要求レベルをC++14からC++11に引き下げ
Fusion
BOOST_PP_IS_EMPTY
を使用したことによる、MSVC8での大量の警告を低減 #11157- コンテナの変換コンストラクタとSFINAEでコンパイルエラーが発生する場合があった問題を修正 #11766
- C++11版の
fusion::vector
から末尾fusion::void_
の特別扱いを削除した pull request 120 - GCC 4.0および4.1においてICEになる問題の回避策を追加 #5808 #7229
- GCC 3.4で
fusion::convert
の呼び出しが曖昧になる問題を修正 pull request 130
Geometry
新機能
within
とcovered_by
の、spherical座標系とgeographic座標系でのBox/Boxの組み合わせをサポート
改善
- オーバーレイ : コロケーション(co-location)な交差点のハンドリングを強化。
handle_tangencies
をclusters
で置き換えた。colocated turnによる多くのバグを修正
解決したチケット
- #9162 非デカルト座標系(cartesian)でのPoint/Arealの組み合わせに対する関係操作が不正な結果になる問題を修正
- #10866
union_
が1.56と1.57で動作していなかった問題を修正 - #11018 MultiPolygon同士の
intersection
が不正な結果になる問題を修正 - #11576 Polygon同士の
intersection
が不正な結果になる問題を修正 - #11637 未使用パラメータの警告を修正
- #11725
union_
がholeを作ることに失敗する問題を修正 - #11789
spherical_equatorial
座標系の集合演算がアサーション失敗もしくは不正な結果になる問題を修正 - #11917 Andoyer距離戦略(geographic distanceのデフォルト)が対蹠点について
0
を返す問題を修正 - #11928 測量面積戦略(surveyor area strategy)の精度を向上
- #11966
svg()
関数が、boxと非int
の座標系でコンパイルエラーになる問題を修正 - #11984
union_
が自己交差のポリゴンを生成する問題を修正 - #11987
rtree::remove()
がgeographic座標系でコンパイルに失敗する問題を修正 - #12000
mask_handler
関係の、参照を受け取る未使用のコンストラクタを削除 - #12106
envelope()
が非cartesian座標系の非常に短いセグメントに対してアサート失敗する問題を修正
バグ修正
- SegmentがBoxの面に平行である場合、SegmentとBoxに対する
intersects
/disjoint
が不正な結果となる問題を修正 - 非cartesian座標系での、エッジケースのPoint/Areal関係の操作を修正
- spherical座標系とgeographic座標系での、Point/BoxとBox/Boxの組み合わせでの
intersects
とdisjoint
のいくつかのケースを修正 - spherical座標系とgeographic座標系での、Point/Boxの組み合わせでの
within
とcovered_by
のいくつかのケースを修正
Interprocess
バグ修正
- GitHub Pull #23 MinGWのヘッダーインクルードでの、大文字・小文字を修正
Intrusive
バグ修正
- Boost Trac #11832 clang-clでコンパイルエラーとなっていた問題を修正
- Boost Trac #11865 Clang 3.6 (C++11/C++14)において、
intrusive::list
の明示的コンストラクタがエラーとなっていた問題を修正 - Boost Trac #11992
key_type
を取るinsert_check
のオーバーロードを追加 - GitHub Pull #19 ebo_functor_holder: コピーコンストラクタのコンパイルエラーを修正
Lexical Cast
- Sun Studio関連の問題を修正
Log
- 一般的な変更
boost::basic_string_ref
のサポートと特殊化は廃止予定となった- ユーザは
boost::basic_string_view
へと移行することが推奨される - なお
boost::basic_string_ref
のサポートは将来的に削除される予定である
- ユーザは
- ターゲットディレクトリ内に保存されるログファイル数に上限を設定できるようになった. Erich Keaneのパッチによる (8746)
- バグ修正
- Windows CEでのいくつものコンパイルに関する問題を修正
- Solarisでのコンパイルに関する問題を修正
- MSVC-10がいくつかの場合でフォーマッタに関して正しくないコードを生成していたので回避策を追加 (#12025)
- 詳細はchangelogを参照のこと
Math
- toolsに多項式算術(Polynomial arithmetic)を追加
Move
- 実験的: バッファを必要としない、漸近的に最適なマージとソートのアルゴリズム(
adaptive_merge
とadaptive_sort
)を実装 - 修正したバグ
- Trac #11758 右辺値参照が有効な環境において、
BOOST_MOVABLE_BUT_NOT_COPYABLE
がアクセス修飾子をprivateにリセットしていなかった問題を修正
- Trac #11758 右辺値参照が有効な環境において、
Multiprecision
- #11857 整数型に対するストリーム入力のバグを修正
- #11922 式テンプレートでのいくつかの曖昧な変換を修正
- #11149 式テンプレートに特化した
min
とmax
のオーバーロードを追加 - #11999
cpp_int
での負の小さな整数に対する右シフトのバグを修正 - #9233
cpp_int
でのビットシフトで、可能であればmemmove
を使用するようにした - #9235
cpp_int
でのデータインポートで、可能であればmemcpy
を使用するようにした - #12039
cpp_bin_float.convert_to<double>()
で、丸めを回避するためにlong double
ではなく関数テンプレートを使用するよう変更 - #12112 NaNとInfinityからの変換を修正
- Windows上のClangへのサポートを強化
- #12090
cpp_dec_float
とcpp_bin_float
の基本的な演算でのNaNとInfinityのハンドリングを修正 cpp_bin_float
に対する減算での支柱エラー(fencepost error)を修正- #12075
float128
の非正規化数を認識できるようにした - #12070 例外を無効化してこのライブラリを使用することを許可した
boost::rational
との比較演算のバグを修正- Oracle C++向けのワークアラウンドを追加
cpp_int
のlimb_type
が符号なしより広い(wider)状況で、型キャストがいくつか抜けていた問題を修正
Optional
boost::optional
を参照パラメータで特殊化した。それにあたって、いくつかの問題を修正した:- 参照
optional
に対するsizeof
がポインタのものとなるようにした - 参照
optional
をコピーして接続した際の、いくつかのバグを修正した - いくつかのコンパイラで、正しくない参照の束縛によって発生していた全ての実行時バグが、コンパイルエラーとして検出できるようにした
- 参照
optional
をswap
できるようにした。これはポインタの浅いswapであり、元となるオブジェクトには影響がない - 参照
optional
が抽象型に対して動作するようにした
- 参照
- 入れ子型のドキュメントを記載した(Trac #5193)
- 完全転送のコンストラクタをSFINAEフレンドリーになるよう修正した(Trac #12002)。ただし、これはC++11の
<type_traits>
を正しく実装した新しめのプラットフォームでのみ機能する - Trac #10445 右辺値を
optional<const T&>
に代入するとコンパイルエラーになる問題を修正
Regex
- GitHub #23 メモリキャッシュのロックフリー実装を変更
Test
バージョン3.2
新機能
- データ駆動テストケースに、フィクスチャと可変引数のサポートを追加
- データ駆動テストケースのサンプルに、ムーブセマンティクスの例を追加
バグ修正
- #6767 浮動小数点数例外の関数を呼び出す際に、明示的にグローバル名前空間スコープ
::
を指定すると、一部の環境でコンパイルに失敗する問題を修正 - #8905 boost/test/impl/debug.ipp :
WaitForSingleObject
の戻り値を無視していた問題を修正 - #9443 ランダムな順序でのテスト実行において、内部で使用している
std::random_shuffle()
が指定されたシードを無視していた問題を修正 - #11854
BOOST_DATA_TEST_CASE
でフィクスチャのサポートを追加 - #11887
BOOST_TEST(3u == (std::max)(0u, 3u))
がテスト失敗する問題を修正 - #11889
BOOST_DATA_TEST_CASE
に対してテストデータとして4次元以上の格子を使用するとコンパイルエラーになる問題を修正 - #11983 XML形式でのレポートに、エスケープされていない文字が含まれていたので修正
Variant
- メンテナンス上の修正
テスト済みコンパイラ
主要なテストコンパイラ:
- Linux:
- Clang: 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7.1
- Clang ,C++14: 3.7.1, 3.8.0
- GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.3, 4.8.4, 4.8.5, 4.9.3, 5.3.0
- GCC, C++11: 4.4.7
- GCC, C++14: 5.2.1, 5.3.1
- Intel: 16.0
- Windows:
- GCC, C++03, mingw: 3.4.5
- GCC, C++11, mingw: 4.6.4, 4.7.3, 4.8.1
- GCC, C++14, mingw: 4.9.3, 5.1, 5.2
- Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0
- Android:
- Clang: 3.6, 3.7
- GCC: 4.9, 5.3
- FreeBSD:
- Clang: 3.4.1, 3.7
- GCC: 4.8.5, 5.3
- Haiku:
- GCC, C++11: 4.8.5
- QNX:
- QCC: 4.4.2
- SunOS:
- Oracle Solaris Studio: 12.4, 12.5
- Oracle Solaris Studio, C++11: 12.5
追加として含まれるテストコンパイラ:
- Linux:
- Clang: 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7.1
- Clang, c++14: 3.7.1, 3.8.0
- GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.3, 4.8.5, 4.9.3, 5.3.0, 5.3.1, 6.0.0
- GCC, C++11: 4.4.7
- GCC, C++14: 5.2.1
- Intel: 16.0
- OS X:
- Apple Clang: 7.0.2
- G++: 5.3.0
- Windows:
- GCC, C++03, mingw: 3.4.5
- GCC, C++11, mingw: 4.6.4, 4.7.3, 4.8.1
- GCC, C++14, mingw: 4.9.3, 5.1, 5.2
- GCC, cygwin: 5.3.0
- Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0
- Android:
- Clang: 3.6, 3.7
- GCC: 4.9, 5.3, 6.0
- FreeBSD:
- Clang: 3.41, 3.7.0
- GCC, C++11: 4.8.5, 5.3.0, 6.0
- GCC: 6.0
- Haiku:
- GCC, C++11: 4.8.5
- QNX:
- QCC: 4.4.2
- SunOS:
- Oracle Solaris Studio: 12.4, 12.5
- Oracle Solaris Studio, C++11: 12.5
翻訳
Kohei Takahashi, Akira Takahashi