本家リリースノート:
- https://svn.boost.org/svn/boost/website/public_html/live/feed/history/boost_1_55_0.qbk
- http://www.boost.org/users/history/version_1_55_0.html
新ライブラリ
- Predef
- Rene Rivera氏作のこのライブラリには、C、C++、Objective C、Objective C++で提供されているマクロや、それらに存在するヘッダ内で定義されているマクロをまとめた情報をもとに、コンパイラやアーキテクチャ、OS、ライブラリ、その他のヴァージョン番号がひととおり定義されている。
更新ライブラリ
- Accumulators
- Any
- Asio
- Atomic
- Chrono
- Circular Buffer
- Config
- Container
- Context
- Coroutine
- Filesystem
- Fusion
- Geometory
- Graph
- Hash
- Interprocess
- Intrusive
- Lexical cast
- Log
- Math
- Move
- Meta State Machine
- Multiprecision
- Multi-index Containers
- MPI
- Phoenix
- Polygon
- PropertyMap
- Rational
- SmartPtr
- Thread
- Timer
- Type Traits
- Unordered
- Utility
- Variant
- Wave
- Xpressive
更新ツール
- Quickbook(#quickbook)
ニュース
- 本バージョンよりいくつかの古いコンパイラのサポートが終了した
- 新しくサポートされる最低環境は以下の通り。なお他のコンパイラに変更はない
- Digitial Mars 8.41
- GCC 3.3
- Intel 6.0
- Visual C++ 7.1
- なお、更に以下のコンパイラのサポートを終了することも考えている。もし使用しているのであればメーリングリストで知らせてほしい
- Metrowoks C++ (ie. codewarrior)
- SunPro 5.3 またはそれ以前
- Borland C++ Builder 2006 (bcc 5.82) またはそれ以前
Visual Studio 2013/Visual C++ 12.0での既知の問題
Visual Studio 2013がリリースされた時期が、Boostのリリースプロセスの遅い段階であったため、いくつかの未解決問題が存在する。これは以下の通り:
- Serializationがコンパイルできない。
<algorithm>
のインクルードが不足しているためである。 - Boost.Containerの
allocator_traits
からhas_member_function_callable_with
を使用するとコンパイルエラーになる(#9332) - いくつかのライブラリで
initializer_list
のオーバーロードが曖昧になり、コンパイルエラーになる。これはVisual C++のバグであり、現在有効な回避策は見つかっていない。UnorderedとMulti-Indexの関数オーバーロードでその問題が発生する。 - Threadの
ex_scoped_thread
がコンパイルに失敗する(#9333)
Accumulators
Any
bad_any_cast
を、モジュール間で見えるようにした (#8751)clear()
メンバ関数を追加- 不足していた
BOOST_NOEXCEPT
を追加 const
rvaluesの問題を修正(#9215)
Asio
- Windowsランタイム向けに、限定的なポートを実装した。このサポートは、言語拡張機能を有効にする必要がある。ポートはWindowsランタイムAPIによって公開される制限機能により、以下の制限事項も付いてくる:
- コア機能である
io_service
、strand
、バッファ、複合操作、タイマー等は、今まで通り動作する。 - ソケットは、クライアントTCP側のみサポートする。
- クライアント側TCPソケットの明示的なバインディングは、サポートされない。
- ソケットでは
cancel()
関数をサポートしない。非同期操作は、クローズによってのみキャンセルを行うことになるだろう。 - null bufferを使用した操作はサポートされない。
tcp::no_delay
、socket_base::keep_alive
オプションのみサポートされる。- 名前解決はサーバー名をサポートせず、番号のみ。例として、"http"ではなく"80"を使用する必要がある。
- ほとんどの名前解決クエリフラグは、効果を持たない。
- コア機能である
- (Boost 1.54.0から導入された)レギュレッションテストを、いくつかの環境向けに修正。
async_connect()
からのエラーが完了ハンドラに伝達されていなかった(#8795)。 - (Boost 1.54.0から導入された)Windows向けの、
io_service
が複数スレッドから着火されるケースのレギュレッションテストを修正。バグが発生した際、非同期操作の結果は正しくないとして破棄され、代わりに0
が使用されていた。TCPソケットでは、見かけ上(spurious)のファイル終端通知で起きていた(#8933)。 - ハンドラトラッキングのバグを修正。いくつかのハンドラIDが正しく出力されていなかった(#8808)。
- 非同期
accept
操作のテストに使用する比較がコンパイルエラーになっていた問題を修正。符号なしソケット記述子が正しく動作するようになった(#8752)。 - すでに発生されたシグナルに対する
async_wait
を開始した際、完了ハンドラにシグナル番号が正しく確実に渡されるようにした(#8738)。 - GCC 4.8の、未使用
typedef
警告を抑制(#8980) - default invocation hookで使用するハンドラの、ムーブ最適化を有効にした(#8624)。
- 重複する
async_write_at
操作を発行すべきではない問題を修正(#8669)。 - Windowsの
HANDLE
を、同期read
のGetOverlappedResult
によって返される、非致命的なERROR_MORE_DATA
を取り扱うように変更。 - Visual C++は言語拡張として「
generic
」をキーワードとして扱う。これを回避するために、名前空間名をcpp_generic
に変更。 - Boost 1.54でサポートされた
async_result
の結果を取り逃すという、いくつかの非同期操作の問題を修正。とくに、buffer streamテンプレートを、現在のハンドラパターンに従うように更新した(#9000, #9001)。 - Visual Studio 2012向けに、ムーブサポートを有効にした(#8959)。
- Visual Studio 2012向けに、
use_future
サポートを追加した。 - #8758)。
- いくつかの、不要なハンドラのコピーを排除した。
- その他、コードとドキュメントの小さな問題を修正した。
Atomic
- x86ターゲットのGCC、MSVCおよびその互換コンパイラに対して、64ビットアトミック操作のサポートを追加。このサポートは、ターゲットCPUの要求するインストラクションがコンパイル時にわかる場合に有効になる
- x86-64ターゲットのGCCと互換コンパイラに対して、128ビットアトミック操作のサポートを追加。このサポートは、ターゲットCPUの要求するインストラクションがコンパイル時にわかる場合に有効になる。このサポートは、新たなマクロ
BOOST_ATOMIC_INT128_LOCK_FREE
でテストできる - GCC環境で、より効率的な
atomic<>
の実装を追加。これはGCC 4.7以降で導入された__atomic*
インストラクションを使用する - ARM v7のサポートを追加。Thumb 2のサポートを改善
- GCCとその互換コンパイラに、x32ターゲットのサポートを追加(たとえば、64ビット x86で32ビットポインタを使用できるような環境)
- Boost.Threadへの依存を削除
- False Sharingを避けるために、内部的なロックプールに適切なパディングとアラインメントが含まれるようになった
- Windows上のIntelコンパイラのコンパイル問題を修正。Windows上の重複した内部マクロを削除
- いくつかのコードを、使用可能な場合にC++11機能を使用するようリファクタリング
Chrono
バグ修正
- 1.52と1.53でchrono_ioが文字列を正しくパースできていない問題を修正 (#7868)
boost/chrono/stopwatches/formatters/base_formatter.hpp
のtypoを修正 (#9028)- [訳者註]:
=
とするべきところ==
としていたため、duration_style
を変更出来ないでいた
- [訳者註]:
- std::tmを初期化していなかったのを修正 (#9147)
Circular Buffer
- Boost.Moveによりムーブセマンティクスをサポートした (#7888)
- これによりCircular Bufferはムーブ可能かつコピー不可能な型をサポートする
- ただし
noexcept
なムーブコンストラクタかつムーブ代入演算子の両方が実装されている必要がある
- ドキュメントの改良
BOOST_NO_EXCEPTIONS
指定されているとコンパイル出来ない問題を修正 (#5362)- 不要な
const
に対する警告を修正 (#7025) - MSVCにおいて、Circular Buffer以外で定義されたコンマ演算子によって警告が出るのを抑制 (#7950)
Config
- 破壊的変更: 古いコンパイラのサポートを終了した
- 新しいサポート対象は以下のバージョン及びそれ以後のみである。なお、他のコンパイラに変更はない
- Digital Mars 8.41
- GCC 3.3
- Intel C++ 6.0
- Visual C++ 7.1
Container
- SCARYイテレータを実装
バグ修正
flat_set
とflat_map
のイテレータがランダムアクセスイテレータであることが言及されていないのを修正 (#8269)- clangの
-Wimplicit-fallthrough
によってswitch-caseでwarningが出力されるのを修正 (#8473)- [訳者註] warningを抑制する
BOOST_FALLTHROUGH
マクロが (#8408) で提案されている。用例は次の通り:
- [訳者註] warningを抑制する
switch (cond) {
case A:
... ;
BOOST_FALLTHROUGH;
case B:
... ;
break;
}
- C++11で
std::map
に新規追加されたコンストラクタと同様のものを追加 (#8892)- [訳者註] 例えば次のようなものである
explicit flat_map( const Allocator &a )
flat_set::insert
の呼び出しが曖昧になっていた問題を修正 (#9009)scoped_allocator_adaptor
とともに使用した場合、コピーでSEGVる問題を修正 (#9064)- ソート済みの非ユニークなシーケンスをflat_setに挿入するとクラッシュする問題を修正 (#9092)
flat_multimap::insert(itr,itr)
でリークする問題を修正 (#9108)
Context
- スタックが正しくアラインメントされていないことにより、SSE2のIntrinsic命令によってセグメンテーションフォルトが起きる問題を修正 (#8650)
Coroutine
-
新しいインターフェイス(unidirectional data transfer)を追加
- http://www.boost.org/doc/libs/1_55_0/libs/coroutine/doc/html/unidirect.html
- 所謂Generatorの実装である。以下に簡単なコード例を示す
boost::coroutines::coroutine<int>::pull_type gen( [](boost::coroutines::coroutine<int>::push_type &yield) { for (int i : {0, 1, 2, 3}) yield(i); }); … for (int i : gen) std::cout << i << std::endl;
これまでのように
coroutine
のcaller
からcallee
に値を渡すことができない単方向(unidirectional)のインターフェイスとなるこのインターフェイスを実装したことにより、従来の双方向なインターフェイスは 非推奨 となった ただし、
BOOST_COROUTINES_OLD
マクロを定義することで古いインターフェイスも従来通り使用可能となる。 -
Jamfile.v2でのターゲット名が間違っていることによって、ビルドができない問題を修正 (#8782)
- Windows環境でのauto-linkを有効にした (#8801)
Filesystem
- Android環境でコンパイルエラーになる問題を修正 (#8706)
Fusion
fusion::map
のconvert
がコンパイルエラーになる問題を修正。map_tag
に対するconvert_impl
の特殊化を実装 (#8759)
Geometry
機能追加
centroid()
に、segment type
のサポートを追加intersects()
とdisjoints()
に、Segment-BoxとLinestring-Boxのサポートを追加- パッキングアルゴリズムを使用した
rtee
の作成を追加 contains()
とcovers()
に、空間クエリ述語(spatial query predicates)を追加- イテレーティブクエリを追加
バグ修正
- いくつかのケースで、コンセプトに違反して
.back()
と.clear()
が呼ばれていた。報告された例を修正 cart_intersect
、get_turn_info
、handle_tangencies
、enrich_intersection_info
で、一貫性のあるサイド情報を使用するようにした。これは(必要に応じて)6ポイントのみの整数、4 or 3セグメント上でのズームに切り替えることによって行われる
解決したチケット
- スパイクによって引き起こされる、Intersectionで自己交差が生成される問題を修正した (#6958)
- 直前ステップのスパイクによって引き起こされる、不正な入力例外(invalid input exception)問題を修正 (#8364, #8365)
boost::geometry::model::point
の単一引数コンストラクタに、explicit
を付けた (#8369)- ドキュメントにメンバ変数が記載されるよう、doxygen_xml2qbkツールを修正 (#8825)
- スパイクによって引き起こされる、triangle-triangleのintersectionが失敗する問題を修正 (#8652)
<boost/geometry/strategies/intersection.hpp>
が自身のファイルをインクルードしていたので修正 (#9047)
Graph
- バンドルプロパティとして
void
型は許可していなかったが、指定できてしまっていた(たとえば、VertexProperties
テンプレートパラメータへのグラフ型指定で)。現在は、静的アサートで完全に禁止した。代わりにboost::no_property
を使用すること depth_first_search
に、ビジターイベントポイントfinish_edge
のサポートを追加。この変更は、そのメンバ関数を持たないビジターとの下位互換性を持つ (#5269)- Sunコンパイラでのビルドテストを無効にした
- マルチソース頂点のサポートを、非名前付きパラメータ版の
breadth_first_visit
、breadth_first_search
、dijkstra_shortest_paths
、dijkstra_shortest_paths_no_init
に追加した。これはまだドキュメントに記載していない。これを使用する場合は、それらの関数の単一頂点パラメータを、同じ型を指す2つのInput Iteratorで置き換える - Louis Dionneのコントリビュートにより、Hawick circuitsアルゴリズムを追加した (#8433)
- Maciej Piechotkaのコントリビュートにより、edge coloringアルゴリズムを追加した (#8317)
- Piotr Wygockiのコントリビュートにより、min-cost max-flowアルゴリズムを追加した
- 以下のバグ、および機能リクエストを修正した:
Hash
Interprocess
バグ修正
- MSVCのSTLの実装の問題によりリークする問題を修正 (#7156)
interprocess::shared_ptr
の代入演算子の実装の問題を修正 (#7164)- ドキュメントの修正 (#8277)
- GCCにてコンパイルできない問題を修正 (#8976)
- マルチプロセスなブラウザを開くと
condition_variable
が加速する問題を修正 (#9008) - PPCのCASに渡す引数の順番が正しくなかったのを修正 (#9065)
- MSVCにて
realloc
という関数が意図しないマクロ置き換えされるのを修正 (#9073)- [訳者註] この
realloc
は標準のrealloc
ではなく、Interprocessの内部で定義される関数である
- [訳者註] この
Intrusive
- 破壊的変更
splay
コンテナのxxx_dont_splay
関数を廃止した。また、splay_set_hook
も廃止した。この代替として、bs_set_hook
を利用すること。いずれもBoost 1.56で削除予定である - ABI変更 ハッシュコンテナの
end
イテレータがバケット配列のend
よりひとつ後ろを指すよう実装されていた (#8698)。このため、バケット配列の隣に値を挿入したときにひどいバグが発生していた。end
イテレータはバケット配列の先頭を指すように修正した - テンプレートおよびデバッグシンボルの削減のために大規模なリファクタリングを行った。MSVCのデバッグモードで生成されるテストオブジェクトファイルサイズが約半分になった。Identical COMDAT Folding (ICF)がないコンパイラでもサイズ削減に寄与するはずである
- SCARYイテレータを実装した
Lexical cast
std::bad_alloc
例外はboost::bad_lexical_cast
に変換されなくなった。(#8966)std::numeric_limits
の128bit整数型に対する特殊化された値が変換のために必要になった場合に、それをチェックするstatic assert
を追加。128bit整数型をサポートしているかどうかを判定するためにBOOST_HAS_INT128
を使用するように変更。(#8790)- ドキュメントを改善し、さらに多くの使用例を追加。
Log
修正点
BOOST_LOG_WITHOUT_DEFAULT_FACTORIES
環境設定マクロを追加した。このマクロを定義すると、設定パーサでのフォーマッタファクトリとデフォルトフィルタのコンパイルをしないようになる。これにより、設定パーサのサポートを維持したままバイナリサイズを削減できる可能性がある- パーサを書きなおして生成されるバイナリサイズを削減した。この修正により、あいまいな入力や正しくない入力の検出精度が向上し、より堅牢になった
- 以下のヘッダを廃止予定にした。これらのヘッダは将来のリリースで削除される。また、内容については他のライブラリに移譲した
boost/log/utility/intrusive_ref_counter.hpp
boost/log/utility/explicit_operator_bool.hpp
boost/log/utility/empty_deleter.hpp
バグ修正
- Windows上で
QueryPerformanceCounter
APIを利用した場合、激しいスレッド間競合により、timer
アトリビュートが間違った時間になってしまう問題を修正 - パース済みフィルターとあるアトリビュートの組み合わせを防止するフィルターパーサのバグを修正
- デフォルトシンクとフォーマッタ間でスレッドIDの書式が違う問題を修正
完了したチケット
- Android上で
posix_memalign
が宣言されていない (#8815) - Mingw w64上でコンパイルできない (#8819)
boost/log/detail/spin_mutex.hpp
がpthread_
系関数からのエラーを完全に無視している (#8915)libs/log/src/once_block.cpp
がpthread_
系関数からのエラーをほとんど無視している (#8917)- Sun Studio 12.3で
attribute_value_set.cpp
がコンパイルできない (#9139) - Sun Studio 12.3で
boost/log/detail/snprintf.hpp
がsnprintf
とvsnprintf
が定義されていないためコンパイルできない (#9140) - Sun Studio 12.3で
boost::log::aux::light_function
がビルドできない (#9153) - solaris studio 12.3でstlport4を利用するとき、
<cstudio>
をインクルードすればfflush
はstd
名前空間にあるが、<stdio.h>
をインクルードしてもstd
名前空間にある(using
しているだけ)ので、std::
を指定しなければならない (#9155)
詳細は変更履歴を参照のこと
Math
- 多数の警告を抑制。(主にGCC-4.8とMSVCからのもの)(#8384, #8855, #9107, #9109)
- PGIでのコンパイルエラーを修正。 (#8333)
- PGIで、
erf
関数が不正な値を生成する原因となる、定数初期化の問題を修正。 (#8621) - C++の関数と同じ名前で定義されているC99のいくつかのマクロでマクロ展開されてしまうのを防止。 (#8732, #8733)
- 自由度が巨大な(
integer
で表現可能な値よりも大きな)場合でもStudentのT分布が正しく振る舞うように修正。(#8873) - プラットフォームで
long double
がサポートされていない場合でも、いくつかのコア関数でlong double
が使用できるようにした。(#8940) - 確率変数が無限大の時に不正な尺度母数や位置母数のエラーを捕捉できるように、分布関数のエラーハンドリングを修正。(#9126)
- Intel C++ 14の不完全な
<tuple>
のためのワークアラウンドを追加。(#9083) - 楕円積分の中で行われる、引数を約分する処理の整合性を向上。(#9104)
- ベータ関数がarcsineもしくはStudentのT分布である時に、逆不完全ベータ関数の結果で桁落ちが発生してしまうバグを修正。([訳注]:訳に自信ないのでダブルチェックお願いします)
- 一種のベッセル関数ならびにK関数の連分数で擬似的な(Spurious)オーバーフローやアンダーフローが発生する問題を修正。([訳注]:訳に自信ないのでダブルチェックお願いします)
- Thomas Luuによる、非中央のカイ二乗分布変位値の改善を追加。
Move
バグ修正
- ドキュメントの誤りを修正 (#7952)
- MoveのTraitsを改善 (#8764)
boost::move
とboost::forward
にnoexcept
指定をつけた (#8765)- C++98/03で
BOOST_MOVABLE_BUT_NOT_COPYABLE
マクロを適用すると正しく動作しない問題を修正 (#8842) boost/move/algorithm.hpp
で自身をインクルードしていた (#8979)
Meta State Machine
- 新機能 : interrupt stateは中断を終了させるためのイベント列をサポートした。
- 例外を無効にしたgcc-4.2でコンパイルが通らなかった問題を修正。(#8686)
Multiprecision
- Boost.Serialization サポートの追加
- GCC による警告を抑制 (#8872)
pow
の引数に大きな値を設定した際に発生するバグを修正 (#8809)pow
で0
のべき乗を計算した場合のバグを修正 (#8798)cpp_int
の IO でCHAR_BIT
以下の値の出力 (文字列への変換) が正常に行われていなかった問題を修正 (#8745)cpp_int
で固定サイズのときに左シフトをするとオーバフローが発生する問題を修正 (#8741)cpp_int
で発生する警告を抑制 (#8748)- C99 のマクロが必要になる関数を修正 (#8732)
cpp_int
でINT_MIN
,LONG_MIN
等の構築が失敗する問題を修正 (#8711)
Multi-Index Container
- Boost.MultiIndexのC++11標準準拠度向上
multi_index_container
を効率的にムーヴできるようになった- Initializer listのサポート
emplace
系関数のサポート- コピー不可の要素(
std::unique_ptr<T>
など)をサポート。また、要素と互換性のある型のイテレータについて、無駄なコピーをせず、[first,last)
の形式で範囲挿入できるようになった - ランダムアクセスインデックスへの
shrink_to_fit()
実装
C++11以前のコンパイラでの制限についてはcompiler specifics参照のこと
- 以下のクラスは非推奨になった:
- その他修正
MPI
- MPI の非推奨な関数を入れ替え
- マルチスレッド初期化のサポートを追加
- in-prace collectives の追加
Phoenix
phonenix::funcion
のコンストラクタをconstexpr
にした (#9049)
Polygon
- Sebastien Loriotによるパッチで、VoronoiベンチマークのCGAL部分を更新した。
- (Intelからのパッチにより、)
polygon_90_set_data
に多角形分解機能(polygon decomposition capability)を追加した。 - Tracチケットのバグ修正:
- Polygonと
range/algorithm
が衝突する問題を修正(#8197)
- Polygonと
Property Map
dynamic_properties
オブジェクトを非破壊的に.property(name, pm)
メソッドチェインで構築できるようになった
boost::dynamic_properties()
.property("color", color_map)
.property("pos", position_map)
- 生ポインタをプロパティマップとして利用できないようにした。これは以前、Visual Studioでしばしば失敗したためである。このような用法はBoost.Graphの例やテストにあったが全て削除した。
graph
でvertex
プロパティを使う際(この機能のもっとも一般的な利用法である)には次のように記述する:
boost::make_iterator_property_map(
<pointer or container .begin() iterator>,
get(boost::vertex_index, <graph object>))
(註:このコードでget()
の名前空間が省略されているのはコードを汎化する上で重要である)
graph
以外では、以下のように記述するとよい
boost::make_iterator_property_map(
<pointer>,
boost::typed_identity_property_map<std::size_t>())
<boost/property_map/property_map.hpp>
の151行目と159行目にはコメントアウトしたstatic
アサーションがあるが、これを有効にすることで、ユーザーコード中にあるこのような廃止予定のポインタの用法を検出することができる
Rational
- C++11モードでコンパイルする場合、Boost.Testが
lowest
とmax_digits10
のどちらかを参照するため、C++11で追加されたstd::numeric_limits
のメンバ、lowest
とmax_digits10
をユニットテストコードに追加した。 - C++11でナローイングがエラーになるため、内部変数の初期化でナローイングがおこらないように修正した。これにより #5855 が解決された。
SmartPtr
- Boost.Logから抽出された
boost/smart_ptr/intrusive_ref_counter.hpp
ヘッダーが加えられた。このヘッダーはユーザーのクラスにintrusive_ptr
サポートを加えるミックスイン基底クラスを実装する。
Thread
機能追加
- #8519 同期: completion function(バリアの待機完了時に呼ばれる関数)の機能を追加して
barrier
クラスを更新。 - #8515 非同期:
shared_future::then
を追加。 - #8615 非同期:
make_future
/make_shared_future
をmake_ready_future
に置き換え。 - #8627 非同期:
future<>::unwrap
メンバ関数とunwrap
するコンストラクタを追加。 - #8677 非同期:
future<>::get_or
を追加。 - #8678 非同期:
future<>::fallback_to
を追加。 - #8891
upgrade_to_unique_lock
にmutex()
メンバ関数が無かったので追加。 - #8955
future
から効率的にexception_ptr
を取得したいという要望に対応。
バグ修正
- #7461
count_to_release
が0
のときにdetail::win32::ReleaseSemaphore
が呼ばれてしまう問題を修正。 - #8070
GetTickCount
より適切なGetTickCount64
を使用するように変更。 - #8768 win32で稀に
condition_variable
が永遠にwait
してしまう問題を修正。 - #8817 Windows CE用のコードによって、mingw w64環境でコンパイルができない問題を修正。
- #8943 Window上のIntel C++ Composer XE 2013で
boost::call_once
を使用したコードのコンパイルに失敗する問題を修正。 - #8931
external_locking
のリファレンスにtypoがあったのを修正。 - #9029 ドキュメントの誤植を修正。
- #9037 gcc
-Wshadow
でコンパイルしたときにconditional_variable{,_fwd}.hpp
で警告が発生する問題を修正。 - #9041 Boost.Threadの動的共有オブジェクトがBoost.Atomicへのシンボル参照を解決できない問題を修正。
- #9048
boost::scoped_thread
の可変長テンプレート引数を使用するコンストラクタが使いにくい問題を修正。 - #9079 Windows環境で、Condition variableが永遠にwaitしてしまう問題を修正。
Timer
- Intel compilerで
progress.hpp
がコンパイルできない問題を修正(#8956)
Type Traits
is_copy_contructible
トレイト追加 (#8802)
Unordered
Utility
boost::result_of
で、デフォルトでTR1のプロトコルを使うようにし、もしこの関数オブジェクトがサポートしていない場合(たとえばC++11のラムダ関数)にはdecltype
を使うように設定できるようになった。このモードを利用するにはBOOST_RESULT_OF_USE_TR1_WITH_DECLTYPE_FALLBACK
環境設定マクロを定義するboost::base_from_member
クラステンプレートのC++11対応度向上。このクラスはコンパイラが右辺値参照、可変引数テンプレート、関数テンプレートのデフォルト実引数機能を備えている際に、コンストラクタ実引数の完全転送を実装する- Boost.Logから
boost/utility/explicit_operator_bool.hpp
とboost/utility/empty_deleter.hpp
を受け継いだ。それぞれ、bool
への明示的な型変換演算子となにもしないデリータを定義するためのユーティリティである
Variant
const
rvalueをコンストラクタ/代入演算子の仮引数にしたときコンパイルできない問題を修正 (#8988)- ある
variant
クラステンプレートがnothrow
コピーコンストラクタと例外を送出するムーヴコンストラクタを持っている場合に、ムーヴ代入演算子がコンパイルできない問題を修正 (#8772) - 例外が無効の環境下でのコンパイルに対応 (#8717)
- 到達不能コード警告を解消 (#8665)
- 重複したコードを削除 (#7601)
Wave
- Waveドライバーが0xFFFFui64トークンを不適切に処理する問題を修正 (#8848)
- ドキュメントに
--c++0x
オプションが記載されていたが、実際には不正なオプションになる。ドキュメント表記を--c++11
に修正 (#9098)
Xpressive
- 不完全なキャラクタセットについて
assert
ではなく例外を投げるようにした (#8843) - 未使用の
typedef
削除 (#8880) sequence_stack.hpp
でtry
/catch
のかわりにRAIIを使うようにした (#8882)- clangの
-Wimplicit-fallthrough
診断がきちんと動くようにした (#8474)
Quickbook
- Quickbook 1.6の言語実装を完了した。詳細は以下を参照
<ライブラリ名>
新機能 (必要であれば分類分けをする)
バグ修正
- 破壊的変更: 赤文字+ボールドではっきりと分かるように
-
ABI変更: これも赤文字で
-
[訳注] 本家ノートの記述が不十分であると考えるときは、適宜注釈を入れる
- 参照: 必要であれば外部の文献へのリンクを挿入する
テスト済みコンパイラ
主要なテストコンパイラ:
- Linux:
- Clang: 3.3, 3.2, 3.1, 3.0
- Clang, C++11, libc++: 3.4, 3.3
- GCC: 4.8.1, 4.7.3, 4.6.3, 4.5.3, 4.4.7
- GCC, C++11: 4.8.1
- GCC, C++98: 4.8.1
- OS X:
- GCC: 4.2
- Apple Clang: 5.0
- Apple Clang, C++11: 5.0
- Windows:
- GCC, mingw: 4.8.0, 4.7.2, 4.6.3, 4.5.4, 4.4.7
- Visual C++: 11.0, 10.0, 9.0
追加して含まれるテストコンパイラ:
- OS X:
- Apple Clang: 5.0
- Apple Clang, C++11: 5.0
- Clang: trunk
- Clang, C++11: trunk
- GCC: 4.2.1
- Linux:
- Clang: 3.3, 3.2, 3.1, 3.0, trunk
- Clang, C++11: 3.4
- Clang, C++11, libc++: 3.4, 3.3
- GCC: 4.9.0 (experimental), 4.8.1, 4.7.3, 4.6.4, 4.5.3, 4.4.7
- GCC, C++11: 4.8.1
- GCC, C++98: 4.8.1
- Intel: 13.0.1, 12.1.6
- Windows:
- GCC, mingw: 4.8.0, 4.7.2, 4.6.3, 4.5.4, 4.4.7
- Visual C++: 11.0, 10.0, 9.0
翻訳
Akira Takahashi, Kohei Takahashi, Yuta Hirokawa, zak, sscrisk, hotwatermorning