本家リリースノート:
- 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)
ニュース
- 本バージョンよりいくつかの古いコンパイラのサポートが終了した
- 新しくサポートされる最低環境は以下の通り。なお他のコンパイラに変更はない
- Digital 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を追加 constrvaluesの問題を修正(#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.hppboost/log/utility/explicit_operator_bool.hppboost/log/utility/empty_deleter.hpp
バグ修正
- Windows上で
QueryPerformanceCounterAPIを利用した場合、激しいスレッド間競合により、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
phoenix::functionのコンストラクタを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
constrvalueをコンストラクタ/代入演算子の仮引数にしたときコンパイルできない問題を修正 (#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