本家リリースノート:
- https://github.com/boostorg/website/blob/master/feed/history/boost_1_72_0.qbk
- http://www.boost.org/users/history/version_1_72_0.html
リポジトリは以下:
リポジトリからのビルド方法は、egtraさんのブログを参照:
更新ライブラリ
- Asio
- Atomic
- Beast
- CircularBuffer
- Context
- Endian
- Filesystem
- Functional/Factory
- Geometry
- GIL
- Histogram
- Log
- Math
- MPI
- Multiprecision
- Outcome
- PolyCollection
- Preprocessor
- Smart Pointers
- Test
- VMD
Asio
async_initiate
ヘルパ関数を、C++11以降向けに自動的に戻り値型を推論するよう変更した- C++14向けに、全ての非同期操作で自動的に戻り値型を推論するよう変更した。これにより、完了トークンの実装によって、型消去なしで非同期操作の初期化を、初期化関数に組み込むことができる。
- 戻り値型を推論する完了トークンをサポートするのがC++14以降であることに注意。C++11以前の場合、完了トークンの
async_result
特殊化は、入れ子型result_type
を提供する必要がある
- 戻り値型を推論する完了トークンをサポートするのがC++14以降であることに注意。C++11以前の場合、完了トークンの
async_initiate
にコンセプトのサポートを導入したcompletion_signature<T>
:T
がR(Args...)
のシグニチャ形式であることをチェックcompletion_handler_for<T, Signature>
:T
が指定されたシグニチャの完了ハンドラを使用できるかをチェックcompletion_token_for<T, Signature>
:T
がasync_initiate
と指定されたシグニチャで使用できる完了トークンかをチェック- コンセプトのないC++での後方互換性のために、以下のマクロを提供する。
BOOST_ASIO_COMPLETION_SIGNATURE
、BOOST_ASIO_COMPLETION_HANDLER_FOR
、BOOST_ASIO_COMPLETION_TOKEN_FOR
。これらのマクロは、コンセプトのサポートがない環境でtypename
に展開される
-
全てのI/Oオブジェクト型に、入れ子テンプレート型
rebind_executor
を追加。これは以下のように使用する:
using my_socket_type = tcp::socket::rebind_executor<my_executor_type>::other;
-
入れ子型
executor_type
とメンバ関数get_executor()
を介して、関連するI/O executorに報告するよう初期化関数オブジェクトを変更したexecutor_type
とget_executor()
はオプションとして扱われるべきであり、associated_executor
とget_associated_executor()
ヘルパ関数を介してそれらのアクセスすることが望ましい
-
default_completion_token
トレイトを追加した。これはI/O executor型に、非同期操作で使用する関連するデフォルトの完了トークン型を与える。このトレイトは、非同期操作の宣言で以下のように使用する:
template < typename IoObject, typename CompletionToken = typename default_completion_token< typename IoObject::executor_type >::type > auto async_fyz( IoObject& io_object, CompletionToken&& token = typename default_completion_token< typename IoObject::executor_type >::type{} );
- 特殊化されない場合、トレイトの
type
はvoid
となり、I/O executorに渡されるデフォルトの完了トークンがないことを意味する。 - このトレイトは
use_awaitable
完了トークン向けに特殊化されており、非同期操作を以下のように使用することを許可する:
auto socket = use_awaitable.as_default_on(tcp::socket(my_context)); // … co_await socket.async_connect(my_endpoint); // デフォルトはuse_awaitable
- この例では、
socket
オブジェクトの型はtcp::socket
から変換され、デフォルトの完了トークンがuse_awaitable
に設定されたI/O executorを持つ。ほかの方法として、ソケットの型を直接計算することもできる:
using tcp_socket = use_awaitable_t<>::as_default_on_t<tcp::socket>; tcp_socket socket(my_context); // … co_await socket.async_connect(my_endpoint); // デフォルトはuse_awaitable
- 特殊化されない場合、トレイトの
-
async_initiate
に、不足していたWindows固有のI/Oオブジェクトの非同期操作のサポートを追加 -
executor型が、acceptした新たなソケットに伝播されるようにした
-
新たな接続を同期もしくは非同期にacceptし、しかしexecutorもしくはexecution contextを指定しない場合に、accept操作がacceptorからsocketに、executor typeを正しく伝播するようにした。例として、以下のacceptor型の場合:
basic_socket_acceptor<ip::tcp, my_executor_type>
-
acceptされたsocketの型は以下のようになる:
basic_stream_socket<ip::tcp, my_executor_type>
-
-
Protocol
の要件として、コピーとムーブの操作が例外を送出しないよう変更した Endpoint
の要件として、デフォルトコンストラクタとムーブの操作が例外を送出しないよう変更した- protocolのアクセッサに、
noexcept
修飾を追加 - socketのムーブコンストラクタに、
noexcept
修飾を追加 - Windowsでのシリアルポートを開く操作に関連した以下のissueを修正:
- RTS制御フラグを初期化するために、正しい定数を使用するようにした
- デフォルトのボーレート (baud rate) を設定 (9600)
- 非同期のaccept操作が自動的に再起動されたときに発生する可能性のある、「未処理の作業数」が失われる問題を修正
Atomic
- libstdc++のいくつかのバージョンで
__float128
が浮動小数点数型とみなされない問題へのワークアラウンドを追加 - clang-winコンパイラとの互換性を改善
Beast
- 今回は、バグ修正と、Boost.Asioの新機能対応を含むメンテナンスアップデートである
- このライブラリを使用しているユーザーもしくはユーザー企業がどのようにこのライブラリを使用しているか教えてほしい。以下にリストがある:
- 修正内容
https_get
のサンプルコードで、Host Headerを送信するようにしたasync_read
がタイムアウトしたときのasync_close
のエラーコードを修正- zlibのテストをリファクタし、enumのtypoを修正
CircularBuffer
- GitHub #29
max_size()
メンバ関数がアロケータのmax_size()
を考慮するよう修正 (Glen Fernandes氏)
Context
- s390xアーキテクチャをサポート
- 破壊的変更
execution_context
を削除
Endian
endian_reverse
、conditional_reverse
、および\*\_to_*
をGCCとClang向けにconstexpr
にした- 便利な読み込み関数 (load) と書き込み関数 (store) を追加
[load|store]_[big|little]_[s|u][16|24|32|40|48|56|64]
- 便利な浮動小数点数型の別名を追加
[big|little|native]_float[32|64]_[t|at]
- 非
const
なdata()
メンバ関数を追加し、戻り値型をunsigned char*
に変更 - 利用可能な場合に
endian_reverse
に__int128
のサポートを追加 - 便利なヘッダ
boost/endian.hpp
を追加
Filesystem
- ヘッダファイルを整理
filesystem_error
をexception.hpp
に抽出file_status
と関連する列挙型と関数をfile_status.hpp
に抽出directory_entry
、directory_iterator
、recursive_directory_iterator
をdirectory.hpp
に抽出
- 非推奨化 後方互換性のために
operations.hpp
では、新たなヘッダexception.hpp
、file_status.hpp
、directory.hpp
を、BOOST_FILESYSTEM_NO_DEPRECATED
がdefineされない限りインクルードする。これらの暗黙的なインクルードは非推奨とし、将来のリリースから削除される。ユーザーは、新たなヘッダを直接インクルードするか、filesystem.hpp
をインクルードすることを推奨する filesystem_error
例外が、コンパイル済みBoost.Filesystemライブラリに実装されるようになった。ユーザーは、プロジェクトにBoost.Filesystemライブラリをリンクする必要がある場合がある- GitHub #115 POSIX.1-2008プラットフォームでは、
utime
の代わりにutimensat
を使用するようにした。utime
はPOSIX.1-2008で廃止されており、たとえばuClibc-ngでは無効にできる - 終端状態の
directory_iterator
でメモリ確保エラーが起こらないようにした - Windows環境で、Boost.WinAPIを使用してWindowsバージョンを選択できるようにした
- 新機能
directory_options
列挙型を追加した。これはC++20の名前付き列挙型を反映している。この列挙型を使用することで、directory_iterator
とrecursive_directory_iterator
のイテレーション時の振る舞いをカスタマイズできる。とくに、権限が不十分で開くことのできないディレクトリのスキップをサポートするようになった。symlink_option
列挙型は非推奨となり、directory_options
で置き換えられる - GitHub #112 デフォルトで、
recursive_directory_iterator
でエラーが起きたときに終端状態になるよう、C++20の仕様に合わせた - 新機能
directory_options::pop_on_error
オプションを追加。このオプションはrecursive_directory_iterator
に対して設定するもので、成功するか終了状態になるまでpop()
を繰り返し呼び続けることにより、イテレーションエラーからの回復を試みる - 新機能
directory_options::skip_dangling_symlinks
オプションを追加。このオプションはrecursive_directory_iterator
に対して設定するもので、ぶらさがった (参照先がない) ディレクトリのシンボリックリンクを辿らずに、エラー報告する代わりにイテレーションを続行する - 非推奨化
recursive_directory_iterator
の以下のメンバ関数を非推奨とする:level()
no_push_pending()
no_push_request()
no_push()
- ユーザーは、標準の機能に対応する
depth()
,recursion_pending()
,disable_recursion_pending()
を使用すること。recursion_pending()
は、no_push_pending()
とno_push_request()
と比較して反対の意味をもつことに注意。非推奨となったメンバ関数は、将来のリリースで削除する予定
- GitHub #76
path::lexically_relative
(およびそれに依存するアルゴリズム) を修正し、空、ドット、ドットx2のパス要素を含むパスを正しくハンドリングできるようにした。この動作はC++17に近づき、空およびドットx1パス要素は無視され、ドットx2パス要素は生成される相対パスから減らすよう考慮される
Functional/Factory
factory
とvalue_factory
の実装を、以下の機能に対応するよう書き換えた (Glen Fernandes氏) :- 右辺値引数のサポート (可能な場合)
- 可変引数テンプレートを使用した任意数の引数サポート (可能な場合)
- finalなアロケータのサポート
- fancy pointer (ポインタのように振る舞う機能) を使用するアロケータのサポート
- 例外が無効化された設定をサポート (
BOOST_NO_EXCEPTIONS
) - コンパイル時間を改善
- 以下の機能を削除した:
- C++03向けの
BOOST_FUNCTIONAL_VALUE_FACTORY_MAX_ARITY
による引数の数に対する制限 BOOST_FUNCTIONAL_FACTORY_SUPPORT_NONE_T
によるvoid
の代わりのboost::none_t
の使用
- C++03向けの
Geometry
- 改善
- GitHub #500 剛体反転の問題 (inverse geodesic problem) に、内部でKarney's solutionを使用するようにした (Adeel Ahmad氏に感謝)
- GitHub #561 内部で使用する新たなアルゴリズム
algorithm detail::calculate_point_order()
を追加 - GitHub #584
matrix_transformer
に任意の次元をサポート (Tinko Bartels氏に感謝) - GitHub #616
srs::transformation
を継続的にさまざまな改善。標準のスレッドプリミティブをサポート - GitHub #627 関係操作の汎用性を改善
- 集合と関係の操作の堅牢性に関するさまざまな改善
- 解決した問題
- GitHub #557 spherical-equatorial座標系での
point
とlinestring
のdistance
が間違った結果になる問題を修正 - GitHub #612 geographic座標系での集合操作が間違った結果になる問題を修正
- GitHub #619 spherical-equatorial座標系での集合操作が間違った結果になる問題を修正
- GitHub #557 spherical-equatorial座標系での
- バグ修正
- GitHub #479 sphericalとgeographicの座標系での集合操作のさまざまな問題を修正
- GitHub #623 集合と関係の操作で整数オーバーフローの可能性があった問題を修正
- GitHub #632 非対称の片側バッファ (asymmetric one-sided buffer) の生成のエラーを修正
GIL
- 新機能
- GitHub #309 GSoC 2019: 画像を縮小するLanczos resampling
- GitHub #313 GSoC 2019: バイナリ閾値化 (binary thresholding)、逆バイナリ閾値化 (inverted binary thresholding)、切り詰め閾値化 (truncation thresholding) の機能を追加
- GitHub #314 GSoC 2019: Otsu thresholding method
- GitHub #315 Adaptive thresholdingに、周辺域のmeanもしくはgaussian-weighted sumを使用するようにした
- GitHub #350 GSoC 2019: Harrisレスポンス計算 (non-maximum filteringをともなわないコーナー検出)
- GitHub #364 GSoC 2019: Hessianコーナー検出
- GitHub #361 GSoC 2019: 数値拡張に2Dカーネルの型として、
kernel_2d
とkernel_2d_fixed
を定義 - GitHub #367 GSoC 2019: 2D convolutionの関数として
convolve_2d
を実装 - GitHub #383 GSoC 2019: Box filteringとしてaverage filterを使用
- GitHub #383 GSoC 2019: normalized mean filterをベースにしたブラー関数
- GitHub #392 GSoC 2019: Sobel and Scharr operators
- GitHub #393 GSoC 2019: 画像のノイズ除去のためのMedian filter
- 継続的に新たなテストを追加し、全体的なテストカバレッジを大幅に改善
- GitHub #287
cached_location_t
の目的をドキュメント化 - GitHub #347 数値拡張に、
convolve_rows
とconvolve_cols
を便利に使うためのconvolve_1d
を追加 - GitHub #386 数値拡張に、画像境界の拡張 (image boundary extension) のため
extend_boundary
関数を追加 - GitHub #404 プロジェクトのリリースノートとして
RELEASES.md
をメンテナンスした
- 変更
- GitHub #302 コア機能と拡張を含む全てのテストを
/test
ディレクトリに移動
- GitHub #302 コア機能と拡張を含む全てのテストを
- 削除
- GitHub #274 Boost.MPLをBoost.MP11で置き換えた
- GitHub #274 Boost.TypeTraitsの使用をやめた
- GitHub #296 GCC <= 4.8のサポートをやめた
- GitHub #403 未使用の
include/boost/gil/version.hpp
ファイルを削除
- 修正
- GitHub #273 デフォルト初期化された
channel
とpixel
オブジェクトの未初期化値を修正 - GitHub #284
std::is_trivially_default_constructible
の特殊化による未定義動作を修正 - GitHub #385 不正なヘッダをもつPNGを読むとクラッシュする問題を修正
- 多くの型にRule of Threeを適用 (デストラクタ、コピーコンストラクタ、コピー代入演算子)
- 非推奨だった、暗黙定義されるコピーコンストラクタとコピー代入演算子を削除
- GitHub #273 デフォルト初期化された
Histogram
- 新機能
- C++17コンパイラ向けに、axis型とhistogram型のよりよい推論ガイドを定義
- インデックスを使用したコードのパフォーマンスを改善
- 値のチャンクからのfillを加速する
histogram::fill
メンバ関数を追加 boost/histogram/ostream.hpp
に、1Dヒストグラム向けにASCII棒グラフの出力を追加 (Przemyslaw Bartosik氏によるコントリビュート)- 不正なaxisオプションが渡された場合に、ユーザーフレンドリーなコンパイルエラーを出力するようにした
weight()
とsample()
の間違った使い方をした場合に、ユーザーフレンドリーなコンパイルエラーを出力するようにした- 全てのhistogramがデフォルト値をもつ場合に
true
を返す、algorithm::empty
関数 (Henry Schreiner氏によるコントリビュート) - shrink付き
algorithm::reduce
は、値がbin edgeでない場合に、適格に定義されるようになった - axisが受け入れる値の数を返す
axis::traits::rank
関数 - axisが連続か離散かを判定する
axis::traits::is_continuous
関数 - axisが、入力可能なbinをもっているかを判定する
axis::traits::is_inclusive
関数 - mean accumulator向けに、限定的にweightをサポート
accumulators::weighted_mean::sum_of_weights_squared
メンバ関数を追加
- 修正
- clangでの
-std=c++2a
と-stdlib=libc++
のサポートを追加。gcc-9の互換性を修正 - エラーをトリガーにすることなく、fill中にsampleの代わりにweightを渡せるようにした
algorithm::project
に大量のインデックスを渡したときのセグメンテーションフォルトを修正- indexed range generatorが、
std::array
ベースのストレージで動作していなかった問題を修正 weighted_mean() + weighted_mean() != weighted_mean()
だった問題を修正 (Henry Schreiner氏による問題発見と報告)axis::option::test(...)
が、テストマスクのいずれかのビットが立っている場合にtrue
を返すよう修正 (これまでは、テストマスクの全てのビットが立っている場合にtrue
を返していた)min
とmax
の呼び出しをマクロ展開から保護- concepts.qbkの全てのcrlfをlfに置き換え
- histogramに、ユーザーによって大量のaxisが渡された場合の、不足していた
std::invalid_argument
の例外送出を入れた - コンセプトセクションでの、シリアライズサポートに関するドキュメントを正した
- いくつかのコンパイラバージョンの警告を解決
- clangでの
- その他
- Boost.Histogramのロゴを追加
- 不足していたcopyright注記を追加
axis::category::value
が、スカラ型に対してコピーを返し、その他がconst
参照を返すようにした- コードの膨張を防ぐために、例外のメッセージ生成に
std::ostringstream
を使用するのをやめた - ドキュメント改善
- overviewセクションを再構成
- 新機能を紹介するuser guideを更新
- accumulatorの例を更新
- Conceptsで、accumulatorがオプショナルにweightを受け入れる方法を記載
- ベンチマークコードを更新
- b2とcmakeビルドシステムの一貫性をチェックするテストを追加
- ODR (One-Definition-Rule) をチェックするテストを追加 (非テンプレートな関数が
inline
になっていなかったらテスト失敗) - シリアライズのコードをBoost.Serializationから分離
- Boost.CallableTraitsへの依存を削除
Log
- clang-winコンパイラとの互換性を改善
Math
- 超幾何関数 (Hypergeometric functions) として、1F0、0F1、2F0、1F1、pFqを追加
- ヤコビ多項式 (Jacobi polynomial) と導関数 (derivatives) の評価を追加
- ゲーゲンバウアー多項式 (Gegenbauer polynomial) と導関数の評価を追加
- カーディナルB-スプライン曲線 (Cardinal B-Splines) と導関数を多項式として追加
- カーディナル三角補間 (Cardinal Trigonometric Interpolation) を追加
- 小区分 (sub-section) の統計を追加
- 1標本t検定 (One Sample Student's T Test) を追加
- 正規性のために、アンダーソン–ダーリング検定 (Anderson Darling test) を追加
- 自動訂正のために、リュング・ボックス検定 (Ljung Box test) を追加
- ランダムなシーケンスのために、ラン検定 (Runs test) を追加
- ヘッダ
boost/math/tools/univariate_statistics.hpp
とboost/math/tools/bivariate_statistics.hpp
を非推奨化し、boost/math/statistics/univariate_statistics.hpp
とboost/math/statistics/bivariate_statistics.hpp
を推奨 - 経験累積分布 (Empirical CDF distribution) を追加
- ランチョス近似 (Lanczos approximation) を通常の精度で使用するすべての関数に適用できるように、多精度ガンマ関数で使用されるスターリング近似 (Sterling approximation) を作り直した。また、Lanczos近似を10進数100桁精度まで拡張した
MPI
- より明確にドキュメント化した
- 明示的な入力バッファオフセットを使用した際の
scatterv
のバグを修正 - Intel MPI >= 2019.4で、
MPI_Probe
とその仲間の使用を有効にした - Windowsでのシンボル可視性を修正
Multiprecision
constexpr
で大きな更新をし、GCCとClang 9以降もしくはstd::is_constant_evaluated()
を使用できるコンパイラで、cpp_int
とfloat128
の算術演算を完全にconstexpr
化した- GitHub #164 可変精度
mpf_float
で、正しい精度を選択しようしとしてテールスピン (tailspin) に陥るバグを修正
Outcome
- 強化
- スタンドアローン版のOutcomeが
make install
ができるようになり、cmakeのfind_package()
で見つけられるようになった。注意として、個別にインストールする必要があり、依存関係にあるquickcpplib
をインストールしないとfind_package()
が失敗する - スタンドアローン版のOutcomeでは依存ライブラリの管理にgit submoduleを使用していたが、代わりにcmake superbuildの依存関係メカニズムを使用するようにした。cmake configureをすることで、quickcpplibの内部コピーがgit cloneされ、(内部で
find_package()
によって) ビルドディレクトリにインストールされる。これは、configureされていないOutcomeリポジトリにとって破壊的変更となり、以下のいずれかを実行する必要がある:- cmake buildのためのサブディレクトリとしてOutcomeを追加する
- cmake superbuildを使用してビルドとインストールを行う
- シングルヘッダ版を使用する
- スタンドアローン版のOutcomeにおいて、C++ Conceptがコンパイラで使用可能かをチェックし、使用できるなら有効にするようにした。cmake変数
CXX_CONCEPTS_FLAGS
を空文字列に設定することで、この自動検出と有効化を防止できる OUTCOME_TRY
で、操作が成功する可能性が高いかをヒントとしてコンパイラに伝えられるようになった。「P1886 Error speed benchmarking」では、式が成功する可能性が高いかどうかをコンパイラに伝えることにより、非常に小さな関数にとってかなりの有益になることがわかった。OUTCOME_TRY_FAILURE_LIKELY
は操作が失敗する可能性が高いことをコンパイラに伝える。ヒントのない以前の動作に戻したい場合は、OUTCOME_TRY_LIKELY(expr)
の定義を(!!expr)
とすればよい- GitHub #199 C++コルーチンのサポートを追加。これには2種類あり、まず
TRY
操作を行うOUTCOME_CO_TRY()
がある。もうひとつは、outcome/coroutine_support.hpp
ヘッダにeager<OutcomeType>
とlazy<OutcomeType>
の実装があり、C++コルーチン内からbasic_result
とbasic_outcome
をより自然で効率よく使える。具体的には、result
もしくはoutcome
が例外ポインタから構築される場合、コルーチン内から送出された例外は、コルーチンマシンを介して例外を送出するのではなく、送出された例外を保持するオブジェクトをコルーチンreturnする。earger<T>
とlazy<T>
はどちらもT
を受けられる。どちらもVisual Studio 2019およびClang 9でテストし、動作することを確認している - GitHub #210
make_error_code()
とmake_exception_ptr()
が、basic_result<>
との互換性あるコピーとムーブの変換をさらに考慮するようになった。これにより、basic_result<T, E>
からbasic_result<T, error_code>
を構築できるようになった。ここでE
は、ADLにより見つかった非メンバ関数error_code make_error_code(E)
を実装したカスタム型である。そうでない場合、E
はerror_code
とは関連性がないものとされる。同じ機能がexception_ptr
にもあり、こちらはADLによりmake_exception_ptr()
関数が探索される。basic_outcome<>
はコンストラクタの数を維持するために、basic_result<>
よりも小さなサポートとなり、basic_result<>
とfailure_type<>
からの変換を受けられる
- スタンドアローン版のOutcomeが
- バグ修正
- GitHub #184 コンパイラの
[[nodiscard]]
サポートの検出が壊れていた
- GitHub #184 コンパイラの
PolyCollection
メンテナンス上の修正
Preprocessor
- 空 (emptiness) に関する議論をトピックとして追加
- C++20
__VA_OPT__
構築のサポートを追加- C++20レベルの
__VA_OPT__
がサポートされているかを判定するBOOST_PP_VARIADIC_HAS_OPT
- C++20レベルの
__VA_OPT__
を使用して空かをテストするBOOST_PP_CHECK_EMPTY
- C++20レベルの
__VA_OPT__
より柔軟な代替機能であるBOOST_PP_VA_OPT
- C++20レベルの
Smart Pointers
- スカラ型と配列型に対応した
allocate_unique
を実装 (Glen Fernandes氏)
Test
- Boost.Test v3.12
- 新機能
- C++17
std::string_view
のサポートを追加 - GitHub #234
boost::exception
とRTTI無効化環境でのよりよい診断 (Mikhail Pilin氏に感謝)
- C++17
- バグ修正とPull Request
- Issue
- GitHub #206 コンパイル時に無効化されたテストが、JUNITのログで正しく処理されない問題を修正
- GitHub #217 テンプレートタイプに複数のパラメータが含まれている場合に、名前によるフィルタテストができない問題を修正
- GitHub #229 非推奨の
std::random_shuffle
を使用しないよう修正
- Pull Request
- GitHub #227
report_error
に、printfフォーマットのチェック属性を追加 - GitHub #231 OpenBSDに
SI_ASYNCIO
とSI_MESGQ
がなかったので存在チェックを追加 - GitHub #232 Windowsでのタイムアウトを修正
- GitHub #234
boost::exception
とRTTI無効化環境でのよりよい診断
- GitHub #227
- Issue
VMD
- C++20レベルの実装として100%の信頼がある場合に、
BOOST_VMD_IS_EMPTY
に__VA_OPT__
を使用するよう更新
テスト済みコンパイラ
主要なテストコンパイラ:
- Linux:
- Clang: 3.0, 4.0.1, 6.0.1
- Clang, C++0x: 3.0
- Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 6.0.1, 7.0.0, 8.0.0
- 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.2, 6.0.1, 7.0.0, 8.0.0
- Clang, C++17: 5.0.2, 6.0.1, 7.0.0, 8.0.0
- GCC: 4.4.7, 4.5.3, 4.6.3, 5.4.0, 8.0.1
- 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, 8.0.1
- GCC, C++14: 5.4.0, 5.5.0, 6.4.0, 7.1.0, 7.3.0, 8.0.1
- GCC, C++17: 7.3.0, 8.0.1
- Intel, C++14: 18.0
- OS X:
- Apple Clang: 9.0.0, 9.1.0, 10.0.0
- Apple Clang, C++11: 9.0.0, 9.1.0, 10.0.0
- Apple Clang, C++14: 9.0.0, 9.1.0, 10.0.0
- Apple Clang, C++17: 9.1.0, 10.0.0
- Apple Clang, C++1z: 9.0.0
- Apple Clang, C++2a: 10.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
- GCC, C++17: 7.1.0, 7.2.0, 7.3.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
追加して含まれるテストコンパイラ:
- Linux:
- Clang: 3.0, 3.8.1, 3.9.1, 4.0.1, 5.0.2, 6.0.1
- Clang, C++0x: 3.0
- Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 6.0.1, 7.0.0, 8.0.0
- 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.2, 6.0.1, 7.0.0, 8.0.0
- Clang, C++17: 5.0.2, 6.0.1, 7.0.0, 8.0.0
- GCC: 4.4.7, 4.5.3, 4.6.3, 4.9.4, 5.4.0, 5.5.0, 8.0.1
- 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, 8.0.1
- GCC, C++14: 5.4.0, 5.5.0, 6.3.0, 6.4.0, 7.1.0, 7.3.0, 8.0.1, 8.1.0
- GCC, C++17: 7.3.0, 8.0.1
- Intel, C++14: 18.0
- OS X:
- Apple Clang: 9.0.0, 9.1.0, 10.0.0
- Apple Clang, C++11: 9.0.0, 9.1.0, 10.0.0
- Apple Clang, C++14: 9.0.0, 9.1.0, 10.0.0
- Apple Clang, C++17: 9.1.0, 10.0.0
- Apple Clang, C++1z: 9.0.0
- Apple Clang, C++2a: 10.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
- GCC, C++17: 7.1.0, 7.2.0, 7.3.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