最終更新日時:
が更新

履歴 編集

Boost 1.55.0 リリースノート

本家リリースノート:

新ライブラリ

  • Predef
    • Rene Rivera氏作のこのライブラリには、C、C++、Objective C、Objective C++で提供されているマクロや、それらに存在するヘッダ内で定義されているマクロをまとめた情報をもとに、コンパイラやアーキテクチャ、OS、ライブラリ、その他のヴァージョン番号がひととおり定義されている。

更新ライブラリ

更新ツール

  • 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

  • ドキュメントの誤字を修正 (#7915)
  • MSVCでの警告を修正 (#8850)
  • averagefdivに名称変更 (#8262)

Any

  • bad_any_castを、モジュール間で見えるようにした (#8751)
  • clear()メンバ関数を追加
  • 不足していたBOOST_NOEXCEPTを追加
  • const rvaluesの問題を修正(#9215)

Asio

  • Windowsランタイム向けに、限定的なポートを実装した。このサポートは、言語拡張機能を有効にする必要がある。ポートはWindowsランタイムAPIによって公開される制限機能により、以下の制限事項も付いてくる:
    • コア機能であるio_servicestrand、バッファ、複合操作、タイマー等は、今まで通り動作する。
    • ソケットは、クライアントTCP側のみサポートする。
    • クライアント側TCPソケットの明示的なバインディングは、サポートされない。
    • ソケットではcancel()関数をサポートしない。非同期操作は、クローズによってのみキャンセルを行うことになるだろう。
    • null bufferを使用した操作はサポートされない。
    • tcp::no_delaysocket_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を、同期readGetOverlappedResultによって返される、非致命的な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_setflat_mapのイテレータがランダムアクセスイテレータであることが言及されていないのを修正 (#8269)
  • clangの-Wimplicit-fallthroughによってswitch-caseでwarningが出力されるのを修正 (#8473)
    • [訳者註] warningを抑制するBOOST_FALLTHROUGHマクロが (#8408) で提案されている。用例は次の通り:

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)を追加

    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;
    

    これまでのようにcoroutinecallerからcalleeに値を渡すことができない単方向(unidirectional)のインターフェイスとなる

    このインターフェイスを実装したことにより、従来の双方向なインターフェイスは 非推奨 となった ただし、BOOST_COROUTINES_OLDマクロを定義することで古いインターフェイスも従来通り使用可能となる。 - Jamfile.v2でのターゲット名が間違っていることによって、ビルドができない問題を修正 (#8782) - Windows環境でのauto-linkを有効にした (#8801)

Filesystem

  • Android環境でコンパイルエラーになる問題を修正 (#8706)

Fusion

  • fusion::mapconvertがコンパイルエラーになる問題を修正。map_tagに対するconvert_implの特殊化を実装 (#8759)

Geometry

機能追加

  • centroid()に、segment typeのサポートを追加
  • intersects()disjoints()に、Segment-BoxとLinestring-Boxのサポートを追加
  • パッキングアルゴリズムを使用したrteeの作成を追加
  • contains()covers()に、空間クエリ述語(spatial query predicates)を追加
  • イテレーティブクエリを追加

バグ修正

  • いくつかのケースで、コンセプトに違反して.back().clear()が呼ばれていた。報告された例を修正
  • cart_intersectget_turn_infohandle_tangenciesenrich_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_visitbreadth_first_searchdijkstra_shortest_pathsdijkstra_shortest_paths_no_initに追加した。これはまだドキュメントに記載していない。これを使用する場合は、それらの関数の単一頂点パラメータを、同じ型を指す2つのInput Iteratorで置き換える
  • Louis Dionneのコントリビュートにより、Hawick circuitsアルゴリズムを追加した (#8433)
  • Maciej Piechotkaのコントリビュートにより、edge coloringアルゴリズムを追加した (#8317)
  • Piotr Wygockiのコントリビュートにより、min-cost max-flowアルゴリズムを追加した
  • 以下のバグ、および機能リクエストを修正した:
    • ヘッダーファイルのインクルード順に依存していた問題を修正 (#8791)
    • GCCでの未使用変数警告を修正 (#8877, #8986)
    • prim_minimum_spanning_treeに、辺の重みとして負の値を入れると、予期しないエラーが発生する問題を修正 (#9012)
    • dijkstra_shortest_pathsの擬似コードが間違っていたので修正 (#9080)

Hash

  • Sunコンパイラが複雑なSFINAE構文をコンパイル出来なかった問題を修正 (#8822)
  • SVCで無限ループとして推論され警告されてしまうのを抑制 (#8568)

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.hpppthread_系関数からのエラーを完全に無視している (#8915)
  • libs/log/src/once_block.cpppthread_系関数からのエラーをほとんど無視している (#8917)
  • Sun Studio 12.3でattribute_value_set.cppがコンパイルできない (#9139)
  • Sun Studio 12.3でboost/log/detail/snprintf.hppsnprintfvsnprintfが定義されていないためコンパイルできない (#9140)
  • Sun Studio 12.3でboost::log::aux::light_functionがビルドできない (#9153)
  • solaris studio 12.3でstlport4を利用するとき、<cstudio>をインクルードすればfflushstd名前空間にあるが、<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::moveboost::forwardnoexcept指定をつけた (#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)
  • pow0 のべき乗を計算した場合のバグを修正 (#8798)
  • cpp_int の IO で CHAR_BIT 以下の値の出力 (文字列への変換) が正常に行われていなかった問題を修正 (#8745)
  • cpp_int で固定サイズのときに左シフトをするとオーバフローが発生する問題を修正 (#8741)
  • cpp_int で発生する警告を抑制 (#8748)
  • C99 のマクロが必要になる関数を修正 (#8732)
  • cpp_intINT_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)

Property Map

  • dynamic_propertiesオブジェクトを非破壊的に .property(name, pm) メソッドチェインで構築できるようになった

boost::dynamic_properties()
  .property("color", color_map)
  .property("pos", position_map)

  • 生ポインタをプロパティマップとして利用できないようにした。これは以前、Visual Studioでしばしば失敗したためである。このような用法はBoost.Graphの例やテストにあったが全て削除した。graphvertexプロパティを使う際(この機能のもっとも一般的な利用法である)には次のように記述する:

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がlowestmax_digits10のどちらかを参照するため、C++11で追加されたstd::numeric_limitsのメンバ、lowestmax_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_futuremake_ready_futureに置き換え。
  • #8627 非同期: future<>::unwrapメンバ関数とunwrapするコンストラクタを追加。
  • #8677 非同期: future<>::get_orを追加。
  • #8678 非同期: future<>::fallback_toを追加。
  • #8891 upgrade_to_unique_lockmutex()メンバ関数が無かったので追加。
  • #8955 futureから効率的にexception_ptrを取得したいという要望に対応。

バグ修正

  • #7461 count_to_release0のときに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

  • 以下の警告を修正
    • 未使用の変数への警告 (#8851)
    • 未使用のtypedefへの警告 (#8874)
  • いくつかのdetailな関数がADLによってエクスポートされてしまうのを修正

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.hppboost/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.hpptry/catchのかわりにRAIIを使うようにした (#8882)
  • clangの-Wimplicit-fallthrough診断がきちんと動くようにした (#8474)

Quickbook

<ライブラリ名>

新機能 (必要であれば分類分けをする)

  • <追加、変更、削除内容> (#0) (←svn.boost.orgのissuesへのリンク)
  • <追加、変更、削除内容> (r0) (←svn.boost.orgのcommitへのリンク)

バグ修正

テスト済みコンパイラ

主要なテストコンパイラ: - 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