本家リリースノート:
- https://github.com/boostorg/website/blob/master/feed/history/boost_1_67_0.qbk
- http://www.boost.org/users/history/version_1_67_0.html
リポジトリは以下:
リポジトリからのビルド方法は、egtraさんのブログを参照:
既知の問題
- FreeBSDでのコンパイルエラーを修正
- Pythonの自動リンクを修正
新ライブラリ
- Contract
- C++用の契約プログラミングライブラリ。契約プログラミングの全ての機能をサポートしている: サブ契約、クラスの不変条件、事後条件 (古い値と戻り値)、事前条件、表明失敗時の挙動をカスタマイズ (例として、例外を投げるかプログラムを異常終了させるか)、コンパイルに含めるかどうかと表明のチェックをオプショナルに、などなど。作者Lorenzo Caminiti氏
- HOF
- 高階関数 (Higher-order functions) のライブラリ。作者Paul Fultz II氏
更新ライブラリ
- Asio
- Atomic
- Beast
- ContainerHash
- Context
- Core
- Coroutine2
- DateTime
- DLL
- Fiber
- Filesystem
- Fusion
- Geometry
- Locale
- Log
- Math
- Multi-index
- Multiprecision
- Optional
- Phoenix
- PolyCollection
- Python
- Spirit
- Stacktrace
- Test
- Type Index
- Type Traits
- Utility
- Unordered
- Units
- Uuid
- Variant
Asio
basic_socket_acceptor::get_optionにconst修飾を付け忘れていたので追加- GCCのいくつかのバージョンで発生するパースエラーを回避
- チュートリアルのサンプルコードが壊れていたので修正
- 実験的な機能を追加。experimentalな機能は、予告なく変更される可能性があるので注意
experimental::detached: 非同期操作の完了をハンドリングしない指定。完了ハンドラの代わりに指定するmy_socket.async_send(my_buffer, boost::asio::experimental::detached);
experimental::redirect_error:error_codeをキャプチャして完了ハンドラに紐付けるexperimental::co_spawn: コルーチン仕様を統合する機能- 最新機能を使用して、タイムアウトのサンプルコードを更新
asio::deadline_timerよりもasio::steady_timerを使用するようにしたasio::streambufよりもasio::dynamic_bufferを使用するようにした- ブロッキングするクライアントでは、時間指定するasio::io_context::run_for()`関数を使用するようにした
- タイムアウトときのブロッキングで、カスタムの完了トークンの使用法を示す例を追加
BOOST_ASIO_NO_DEPRECATEDが定義されたときの、ユニットテストのコンパイルを修正- Networking TSとの互換性のため、socket iostreamsではデフォルトでchronoを使用するよう変更
- サンプルコードを更新し、Boost.DateTimeよりもchronoを使用するようにした
is_dynamic_bufferトレイトでの、メンバ関数検出の誤りを修正async_resultの、非推奨化されたhandler_typeとの非互換を修正- SSLストリームの実装において、不足していたムーブ最適化を追加
basic_resolver_results::value_typetypedefの誤りを修正- いくつかのOpenSSLバージョンで、
SSL_OP_NO_COMPRESSIONが定義されたときのコンパイルエラーを修正 - バンドル内の複数の証明書を処理するよう
add_certificate_authorityを変更 std::result_ofの代わりにstd::invoke_resultを使用し、MSVCの非推奨化による警告を修正- C++17以降で
std::string_view、C++14でstd::experimental::string_viewを使用するよう変更。C++17モードでBOOST_ASIO_DISABLE_STD_STRING_VIEWを定義すると、強制的に (利用可能だと仮定している)std::experimental::string_viewを使用する - テンプレート引数
DynamicBufferが、enable_ifで使用する前に確実にdecayされるようにした - 新しいMoveConstructibleな完了ハンドラからレガシーな完了ハンドラ (まだCopyConstructibleが要求される) を区別できるよう、ドキュメントを変更
- bufferのデバッグサポートでの、戻り値を無視したことによる警告を黙らせた
- 参照パラメータを含む完了ハンドラのシグニチャで、
basic_yield_contextが動作するよう修正 spawn()で起動されたスタックフルコルーチンが、関数とハンドラ引数のdecayされたコピーを確実に正しく格納するよう修正- Androidでのいくつかの互換性問題を修正
- Jamfileでのクロスコンパイルをサポート
- サンプルコードの、いくつかの移植性の問題を修正
Atomic
- 破壊的変更 1.66.0で追加された
(op)_and_test操作の結果を反対にした。これらの関数は、演算結果がゼロでない場合にtrueを返す。これは標準ライブラリのほかのtest関数と一貫した動作である。この関数を使用するたびに警告を出力するBOOST_ATOMIC_DETAIL_HIGHLIGHT_OP_AND_TESTオプションを用意した。これを定義することで、仕様変更前のこれらの関数を使用しているところを検出できる - C++2a用の更新。
memory_orderがスコープ付きのenumになったことへの対応。memory_order_acquireの代わりにmemory_order::acquireを使用できる。古い名前は互換性のために残る。参照 : P0439R0 - C++2a用の更新。浮動小数点数型のアトミック操作を実験的にサポート
add(加算)、sub(減算)、negate(符号反転)の、fetch_バージョンとopaque_バージョン (戻り値型がvoid) を追加した- ロックフリーのプロパティマクロとして、
BOOST_ATOMIC_FLOAT_LOCK_FREE,BOOST_ATOMIC_DOUBLE_LOCK_FREE,BOOST_ATOMIC_LONG_DOUBLE_LOCK_FREEを追加した BOOST_ATOMIC_NO_FLOATING_POINTを定義することで、浮動小数点数版を無効にできる- 参照 : P0020R6
- 新たな実験的な操作を追加
- 符号反転する
negate_and_testと、ビット反転するcomplement_and_test。結果がゼロでない場合にtrueを返す fetch_と違って変更後の値が返るadd,sub,negate,bitwise_and,bitwise_or,bitwise_xor,bitwise_complement操作を追加
- 符号反転する
- 型
Tのデフォルトコンストラクタがtrivial (自明) であれば、それを要素とするatomic型のデフォルトコンストラクタもそうなるようにした atomic型の内部実装として、符号付き整数型のオーバーフローに起因する未定義動作を回避するようにした。このライブラリの内部で2の補数表現を使用し、オーバーフロー規則に合致するようにした。現在、このライブラリは2の補数表現のネイティブ符号付き整数型を要求する (ただし、定義されたオーバーフローのセマンティクスはない。ライブラリ内部で未定義動作を引き起こさないだけ)- Clangサポートを改善。とくに、DCASがロックフリーにならない問題を修正し、32ビットx86で不正なコードが生成される可能があった問題を修正した
- MinGWサポートを改善。GCC 4.6以上向けに、x86のDCASのコンパイルを修正
- x86 PIEコードで、asmブロックが
ebx値を保存するようにした
Beast
- このバージョンでは、
websocket::streamが assertエラーか未定義な振る舞いを起こす重大な欠陥を修正している。ユーザーは最新の Boost のリリースに更新することを推奨 - 完全な変更のリストについては、公式ページ を参照
ContainerHash
- Boost内の依存関係を簡潔にするためにfunctionalモジュールから分離された
- 新しいモジュール名と対応させるためにヘッダーを別のディレクトリへ移した。以前のパスでも依然として動作する
- 次の標準ライブラリへ対応した
std::string_viewstd::error_codestd::error_conditionstd::optionalstd::variantstd::monostate
- Trac #13501
vector<bool>を明確にサポート。libc++でも動作する - より詳細にはchange logを参照のこと
Context
- GitHub #62/GitHub #64 OSX 32bit下においてEAX/EDXを使って
transfer_tを正しく返すように修正 - GitHub #65
__sanitizer_finish_switch_fiberを呼び出すタイミングが正しくなかったのを修正 - GitHub #66 WindowsでのClangにおいてビルド出来ない問題を修正
- GitHub #73
execution_context(v1)がMSVCでエラーとなる問題を修正 - 既知のバグ : all.hppのインクルード +
<context-impl>ucontext/winfibで「forced_unwind: is not a member ofboost::context::detail」というエラーになる
Core
to_addressとpointer_traitsに、C++2aの設計を反映させた (P0653R2)
Coroutine2
- GitHub #13 プル型コルーチンの起動直後に投げられた例外が再送されなかった問題を修正
DateTime
- さまざまな2038年問題 (32ビット問題) を修正
- GitHub #56, GitHub #58, GitHub #70 1.66.0で導入したバイナリシリアライゼーションのレグレッションを修正
- Trac #4430, Trac #11087, GitHub #68 タイムゾーンのデータベースファイルを更新
- Trac #1078, GitHub #69
from_iso_stringを拡張し、to_iso_stringが出力する特殊な値を読めるようにした - Trac #13159, Trac #12630, GitHub #71 さまざまな問題を解決するために、サポートする年の最大値を10000から9999に変更した
- Trac #11142, GitHub #63
boost::date_time::period_parser::delimiter_stringsがなにもしていなかった - Trac #11168, GitHub #64 無限大のような特殊な値を整数に変換できないようにした
- Trac #12363, GitHub #60
int_adapter内でのis_signedを定数のまま使用するようにした - Trac #12910, GitHub #59
boost::date_time::time_input_facetで%j(その年の何日目か) のみを使用した場合に例外が送出される問題を修正 - Trac #13194, GitHub #54
time_input_facetが%e(2桁スペース埋めの日) がパースできない問題を修正 - GitHub #52, GitHub #72 プロジェクトの測定と品質を向上させるために、GitHubのCIビルド環境を改善
- Trac #3606, Trac #9882, GitHub #62 コンパイラの警告を修正
DLL
- GitHub #16
GetLastError()がエラー値を返すような状況下での問題を修正
Fiber
- GitHub #128 :
condition_variable::wait_forを使っている場合に assert エラー"! ctx->ready_is_linked()"が起きる点を修正 - GitHub #132 : ビルド時に
'stdexception' file not foundエラーが起きる不具合を修正 - GitHub #141 : boost::fibers::async が例外を投げる問題に対応
- GitHub #146 : remote-ready-queue spinlock に対する不要なロックを削除
- GitHub #153 :
context::set_ready()をcontext::schedule()に置き換えるようにドキュメントを修正 - GitHub #154 :
[buffered|unbuffered]_channelsの iterator に関するドキュメントを追加 - GitHub #155 :
this_fiberが boost::fibers 名前空間のメンバとしてドキュメントに記されている (訳注: 正しくはboost::名前空間の直下) 点を修正 - GitHub #156 :
examples/barrier.hppを修正 - GitHub #158 :
work_stealingクラスを動作させるために、BOOST_FIBERS_DECLマクロを追加 - GitHub #162 : タイムアウト待ちの場合に、use-counter (訳注: 正確には
use_count_内部変数) をインクリメントするルーチンを削除 - GitHub #166 :
scheduler::schedule()コンストラクタにおけるctx->wait_is_linked()アサーションを削除 - GitHub #167 : future が作成された場合のみ、
shared_state::owner_destroyed()を呼び出すように修正 - GitHub #168 : ドキュメントが最新でなかったので追随
Filesystem
- GitHub #62, GitHub #43, GitHub #50, GitHub #59
main()関数の前でパス操作したときにクラッシュする問題に対して、静的変数の初期化を修正
Fusion
- GitHub #164 MSVC 2017でコンパイルエラーとなるため
fusion::mapでのSFINAEをテンプレートパラメータへと移した - GitHub #166
fusion::vectorがCWG 945に対応していないコンパイラでエラーとなっていたのを修正 - GitHub #168 エラーメッセージをわかりやすくするためシーケンスコンバータに要素数の事前チェクを追加
- GitHub #171
fusion::tag_ofとfusion::is_native_fusion_sequenceに不完全型を渡せるようにした。 これは挙動の変更ではなく、Boost.TypeTraitsの変更への追従となっている
Geometry
改善
- 新たな地図投影 (map projection) とSRS変換 (SRS transformation) を追加 (部分的にインタフェース変更が発生する可能性があるのでアンドキュメント)
- 新たなアルゴリズム
densify()を追加 - C++17で非推奨になった
std::iteratorの使用をやめた (Daniela Engert氏に感謝) rtreeから直接allocatorを使用するのではなく、boost::container::allocator_traitsを介するようにした (Daniela Engert氏に感謝)- C++03でムーブセマンティクスをエミュレーションするために、
rtreeのデフォルトアロケータをboost::container::new_allocator(とboost::container::allocator_traits) に変更した - Area strategiesのインタフェースを変更した。これは破壊的変更になる可能性がある
- 半径 (Radius) と球体 (Sphere) をspherical strategiesに渡せるようにした
- sphericalとgeographicの
distance()戦略にPoint-BoxとBox-Boxの組み合わせを追加 - (multi)polygonsに対するsimplifyの出力が、2点か (closed polygonの) 3点のringを破棄するが、それらを生成しないようにした
- (multi)polygonsに対するsimplifyが、空のinterior ringsと空のpolygonsを出力から外すようにした
解決したIssue
- Trac #13386 いくつかのGCCバージョン向けのワークアラウンドを追加
- Trac #13381 Visual C++ 2015での
matrix_transformerのコンパイルエラーを修正 - Trac #13436
boost::geometry::model::polygonドキュメントの間違いを修正
バグ修正
length()アルゴリズムに、不足していた戦略解決を追加した。これはVariantのサポートに影響する- (multi)polygonsに対するsimplifyが、closing pointをsimplifyするようにした
振る舞いの変更
- (multi)polygonsに対するsimplifyが、通常では入力のringを回転させてから、凸包 (convex hull) 上の非collinear pointを選択するようsimplifyする。これは出力を改善する
Locale
- C++03の
auto_ptrインタフェースに加えて、unique_ptrのインタフェースサポートを追加。C++17をサポートするために、非推奨のauto_ptrインタフェースを削除オプションとしてBOOST_LOCALE_HIDE_AUTO_PTRを定義できる - ICU > 60.1でのテスト問題を修正
- Trac #6851 Solarisでのビルドを修正
- 最適化付きビルドでのFreeBSD/clangの問題を修正
- MSVCのテストで失敗していた、コードページ932 (CP932) のcodecvt問題を修正
- Trac #12572 国名の正規化をするところでのtypoを修正
- Trac #12453
libs/locale/src/shared/message.cppのコードにムダが多かった icu/date_timeで失敗するケースでthrowが抜けていたのを修正- Boost.Thread v4でのビルドを再度修正
- ICUバックエンドの年フォーマットの代わりにYear of week (年の何週目か) を使用するよう修正
- ICU 56.1以上のフォーマットテストを修正
Log
- C++17 との互換性向上: アロケータを使うために、メンバに直にアクセスするのではなく、
allocator_traitsを使うようにした - ABI の 名前空間の定義を更新することで、gcc 7 以降との互換性を向上させた
- "TextFile" sink の "Append" 設定パラメータをドキュメントに追加した。このパラメータは以前からサポートされていたが、ドキュメントの更新だけが抜けていた
Math
- ネイティブのモンテカルロ・インテグレーションをサポート
- チェビシェフ補間 (Chebyshev interpolation) のルーチンを追加
Multi-index
- Trac #13307
operator&をオーバーロードしていた要素を完全に受け入れられるようになった。この修正を行うために、Boost.Operators を更新してくれた Daniel Frey に感謝する - C++17 で非推奨になった
std::allocatorクラスのメンバの使用をやめた (代わりにstd::allocator_traitsを使用) - メンテナンス上の修正
Multiprecision
- 破壊的変更 Trac #13109 多倍長整数を縮小型に変換する際、大きすぎる値 (もしくは小さすぎる値) を小さな型に変換すると、変換先の型の最大値 (もしくは最小値) となる。これは意図した動作ではあったが、
uint128_tについては未定義動作としてそうなっていた。今回の変更では、このライブラリの全ての整数型でこの動作となる。下位Nビットの値が本当に必要であれば、static_cast<unsigned>(~static_cast<unsigned>(0) & my_value)このようにマスクすることが必要となる - Trac #13148 10進数を有理数型に変換する際のバグを修正 (値ゼロは特別にハンドリングする必要があった)
- Trac #13301
cpp_bin_floatから組み込みのより大きい整数型に変換する際のバグを修正 cpp_bin_floatに対するexp()関数の、ヒューリスティックな使用でのパフォーマンスを改善- Trac #13264 指数型が
intより大きい場合の、floor/ceilとcpp_bin_floatのバグを修正 - GitHub #30 変換先の型が
*thisの型から直接的に構築できる場合に、明示的な型変換演算子を無効にした - Trac #13124 MPIR-3.0の新たな変更に対応した
Optional
- GitHub #46 問題 (訳注:
Optional<X>が、T という名前が付いた enum を持っていると VS2015 でコンパイルできない) を修正 - コンパイル時に
-Wzero-as-null-pointer-constantが出る問題を修正
Phoenix
- Trac #8187, GitHub #56, GitHub #57 ドキュメントとコード例の修正
- Trac #12733, GitHub #58, GitHub #61 C++11で配列型を使用した式がコンパイルエラーとなっていたのを修正
- GitHub #62, GitHub #64, GitHub #66, GitHub #67 Protoのビルトインを使用し最近のMSVCにおけるラムダ式のコンパイルエラーを修正
- 訳者註: C++11のラムダ式ではなく
phoenix::lambdaのこと
- 訳者註: C++11のラムダ式ではなく
- GitHub #59 C++17で非推奨となった
std::iteratrorの使用をやめた。Daniela Engertに感謝
PolyCollection
- メンテナンス上の修正
Python
- ライブラリ名 (.aや.lib) に、Pythonバージョン名がサフィックスとして付くようになった。例として、Python 2.7用にコンパイルすると、
boost_python27とboost_numpy27という名前のライブラリファイルが生成される。関連するBoost.Buildの修正と組み合わせることで、複数のPythonバージョンを一度のビルドプロセスでビルドできるようになった
Spirit
Spirit X3
- 破壊的変更 GitHub #239
with_contextを削除 - GitHub #241
x3::variantとforward_astにnoexceptを追加 - GitHub #238
error_handler::position()がCR+LFの間違ってカウントしていた問題を修正 - GitHub #266
parse_into_container内でのunused_type属性の使用を修正 - GitHub #289 連想コンテナに挿入するパース操作を修正
- GitHub #297
uint_parser<signed T>のオーバーフロー問題を修正 - GitHub #308 VS2015 Update 3向けのワークアラウンドを追加してサポート
- GitHub #313 インクルードガード名がQiと衝突していた問題を修正
- GitHub #316, Trac #12928 rangeに挿入するパース操作を修正
- GitHub #320 static assertのコンセプトを
ForwardIteratorからReadableIteratorConcept & ForwardTraversalConceptに変更 - GitHub #330
fusion::mapのサポートを再度有効にした - GitHub #337
string("...")とattr("...")からの単一要素シーケンスへのmove_toを修正 - GitHub #340 シーケンスのアンラップの代わりに、単一要素ビューの間接参照を使用するようにした
- GitHub #351
parse_nan()での範囲外イテレータの間接参照を防止 - GitHub #355 コンテナが空か判定するために、直接
empty()メンバ関数を使用するのではなく、トレイトを介するようにした
Spirit V2
- GitHub #256, Trac #11493
qi::keywordディレクティブのテストがC++11モードでコンパイルエラーになる問題を修正 - GitHub #279, GitHub #259
subruleのコンパイルエラーを修正 - GitHub #284, Trac #5270
subruleのスコープバグを修正 - GitHub #310 シーケンシャルなOR演算子の未定義動作を修正。パーサーの実行順序がコンパイラに依存していた
- GitHub #271, Trac #12349
boost::optionalが持つtypes型に実装が依存していたが、その型が定義されなくなったために発生していたコンパイルエラーを修正した - GitHub #314, Trac #13311
BOOST_SPIRIT_NO_PREDEFINED_TERMINALSを定義した際に発生していたコンパイルエラーを修正 - GitHub #361, Trac #8268
hold_anyにコピー代入演算子が抜けていたので追加
Spirit.Qi
- GitHub #201, GitHub #271, Trac #12349 代替演算子 (alternate operator,
A | B) を修正 - GitHub #245 実数パーサー内での符号付き整数のオーバーフローを修正
- GitHub #297
uint_parser<signed T>のオーバーフロー問題を修正 - GitHub #304
get_current_lineとget_line_startを修正し、get_line_endを追加 - GitHub #319, Trac #12473 順列パーサー (permutation parser,
A ^ B) を常にoptionalで初期化するようにした - GitHub #320 static assertのコンセプトを
ForwardIteratorからReadableIteratorConcept & ForwardTraversalConceptに変更 - GitHub #358 ユーザー定義の実数ポリシーによって
parse_frac_nが負数を返さないことを保証するため、assertを追加。静的解析による誤検出も防いだ
Spirit.Karma
- GitHub #271 代替演算子 (alternate operator,
A | B) を修正 - Github #261
no_buffering_policyにコピーコンストラクタがなかった問題を修正 - GitHub #345 C++17から非推奨になっていた
std::iteratorからの継承をやめた
Spirit.Lex
- GitHub #247
-fsanitize=undefinedで検出された、enumの範囲外の値が代入されたことにより警告を修正 - GitHub #324, Trac #11540 改行コード文字にエスケープが抜けていた問題を修正
Spirit.Classic
- GitHub #273
std::complexを使用しているところで、<complex>のインクルードが抜けていた問題を修正 - GitHub #274
remove_referenceを名前空間修飾なしで使っていたところを修正 - GitHub #275
match<T &>のコンパイルエラーを修正 - GitHub #323, Trac #12639
BOOST_DISABLE_THREADSを定義した際のコンパイルエラーを修正 - GitHub #336, Trac #7371 scannerのインクリメント対象が間違っていた
- GitHub #345 C++17から非推奨になっていた
std::iteratorからの継承をやめた
Stacktrace
- GitHub #33 Windows OS における Async safe な ファイルダンプ機能は、いくつかのプラットフォームでハングするため、このバージョンで無効とされた。ユーザーは最新の Boost のリリースに更新することを推奨
- 依存関係を減らすため、ContainerHash ライブラリを使うようになった
- 小さな修正 (GitHub #31, GitHub #38, GitHub #39, GitHub #40, GitHub #42 を含む)
Test
- Boost.test v3.7 の詳細については、Changes log を参照すること
- 後方互換性を壊す変更
- 同一のテストスイートに対して、同じ名前でテストケースを追加するとエラーを報告するようになった。詳細は Changes log を参照すること
- 新機能
- 色付きの出力がデフォルトで有効になり、Windows でも利用可能になった
- コマンドラインヘルプが改良され、わかりやすくなった
BOOST_AUTO_TEST_CASE_TEMPLATEマクロが、std::tupleに含まれるシーケンス型も受け入れるようになった
- バグ修正とPull Request
Type Index
- 依存関係を減らすために、ContainerHashライブラリを使用するようにした
- 小さな修正 (GitHub #17を含む)
Type Traits
- 新たなトレイト
detected,detected_or,is_detected,is_detected_convertible,is_detected_exact,is_completeを追加 - 2項演算子の検出コードを大きく改善した
- 完全型を引数の要件とするトレイトのために、完全性を検証するアサーションを追加。これによって、不完全型から誤った結果が出力されることを防げるようになる
- Trac #12212 MPL互換性の小さな修正
- Trac #12003
is_constructibleが (可変引数テンプレートで) 完全に実装されたことを表すマクロBOOST_TT_IS_CONSTRUCTIBLE_CONFORMINGを追加 - C++17の
noexcept仕様で正しく動作するよう、is_functionとis_member_function_pointerを更新 is_default_constructibleとstd::pair向けのワークアラウンドを追加- C++11より前の言語バージョン向けに、
is_nothrow_swappableの実装を追加
Utility
- 破壊的変更
boost::nextとboost::priorをIteratorモジュールに移動したため、<boost/utility.hpp>に含まれないようになった。代わりに<boost/next_prior.hpp>をインクルードすること。ほかの機能を使用する場合でも、<boost/utility.hpp>ヘッダをインクルードすることは推奨しない。特定機能のヘッダをインクルードをする方がよいだろう
Unordered
- GitHub #7 C++17で非推奨になった
std::iteratorの使用をやめた
Units
- Trac #10270, GitHub #27 scaled units (大きさの情報を持つ単位型) に対する
sqrtがコンパイルエラーになる問題を修正 - GitHub #22
constexprサポートを追加 - 小さなドキュメント修正
Uuid
- 破壊的変更 GitHub #61
random_generatorがコピー可能でなくなった - GitHub #53 OSが提供するエントロピーを直接使用するために、
random_generatorを最適化 - UUIDのバルク生成のために、
random_generator_mt19937を追加 - エントロピーの取得エラーを、無視するのでなく処理するようにした
- GitHub #24 Windows UWPをサポート
- CloudABIをサポート
Variant
- GitHub #42, GitHub #46 プリプロセッサによる関数引数の生成やメタ関数生成の代わりに、可変引数テンプレートを使用するようにした。初期の修正を提供してくれたNikita Kniazev氏に感謝
- GitHub 40, Trac #13288
apply_visitorからビジターへ引数を完全転送するよう修正。Paweł Dac氏に感謝 - 小さな修正 (GitHub #41, GitHub #44を含む)
テスト済みコンパイラ
主要なテストコンパイラ:
- Linux:
- Clang: 3.0, 4.0.1, 5.0.1
- Clang, C++0x: 3.0
- Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 5.0.1
- Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 4.0.1, 5.0.1
- Clang, C++17: 5.0.1
- GCC: 4.4.7, 4.5.3, 4.6.3, 5.4.0, 7.2.0
- GCC, C++0x: 4.4.7
- GCC, C++11: 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 7.2.0
- GCC, C++14: 5.4.0, 5.4.1, 6.3.0, 6.4.0, 7.1.0, 7.2.0, 7.3.0
- GCC, C++17: 7.2.0
- Intel, C++14: 18.0
- OS X:
- Clang: 9.0.0
- Clang, C++11: 9.0.0
- Clang, C++14: 9.0.0
- Clang, C++1z: 9.0.0
- Windows:
- GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
- GCC, C++0x: 4.6.4
- GCC, C++11: 4.7.3, 4.8.1, 4.9.3
- GCC, C++14: 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0, 7.1.0
- Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
追加して含まれるテストコンパイラ:
- Linux:
- Clang: 3.0, 3.8.1, 4.0.1, 5.0.1
- Clang, C++0x: 3.0
- Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 5.0.1
- Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 4.0.1, 5.0.1
- Clang, C++17: 5.0.1
- GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 4.9.2, 5.4.0, 7.2.0
- GCC, C++0x: 4.4.7
- GCC, C++11: 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 7.2.0
- GCC, C++14: 5.4.0, 5.4.1, 6.3.0, 6.4.0, 7.1.0, 7.2.0, 7.3.0
- GCC, C++17: 7.2.0
- Intel, C++14: 18.0
- OS X:
- Clang: 9.0.0
- Clang, C++11: 9.0.0
- Clang, C++14: 9.0.0
- Clang, C++1z: 9.0.0
- Windows:
- GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
- GCC, C++0x: 4.6.4
- GCC, C++11: 4.7.3, 4.8.1, 4.9.3
- GCC, C++14: 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0, 7.1.0
- Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
- FreeBSD:
- Clang: 4.0.0
- Clang, C++11: 4.0.0
- Clang, C++14: 4.0.0
- Clang, C++1z: 4.0.0