本家リリースノート:
http://www.boost.org/users/history/version_1_47_0.html
新ライブラリ
- Chrono
- 有用な時間ユーティリティ。
- 作者:Vicente J. Botet Escribá
- Geometry
- 幾何学ライブラリ。
- 作者:Barend Gehrels, Bruno Lalande and Mateusz Loskot
- Phoenix
- 呼び出し側での小さな無名関数の定義と、より多くのもの。
- 作者:Joel de Guzman, Dan Marsden and Thomas Heller
- Ratio
- コンパイル時有理数ライブラリ。
- 作者:Vicente J. Botet Escribá
更新ライブラリ
- Accumulators
- Asio
- Config
- DateTime
- Dynamic Bitset
- Function
- Foreach
- Function Types
- Graph
- Iostreams
- Iterator
- Lexical Cast
- Logic
- Math
- Meta State Machine
- MultiIndex
- Random
- Proto
- Range
- Spirit
- Tokenizer
- Utility
- Uuid
- Wave
更新ツール
Accumulators
- 新たな統計アキュムレータを追加 :
sum_kahan,sum_of_weights_kahan,sum_of_variates_kahan
Asio
- シグナルハンドリング。
signal_setクラスを追加。 - 非同期プログラムのデバッグ支援。
BOOST_ASIO_ENABLE_HANDLER_TRACKINGをdefineすることで利用可能。 - ソケット
iostreamに対するタイムアウト。ip::tcp::iostreamでexpires_at()もしくはexpires_from_now()を使用する。 - ソケット
iostreamにerror()メンバ関数を追加。 basic_deadline_timer::cancel_one()を追加。この関数は、タイマーに対する待機ハンドラを解除するのに使用できる。ハンドラはFIFO順に解除される。- 完了条件の
transfer_exactly()関数を追加。これは、バッファの合計サイズ(またはバッファのシーケンス)が大きい場合でも、指定されたバイト数を送受信するのに使用することができる。 - 接続操作の合成。
connect(),async_connect()フリー関数の追加。これらの操作は、ソケットが正常に接続されるまで、リスト内の各エンドポイントを試みる。IPv4とIPv6の両方で動作するTCPクライアントを作成するために便利。 - 個々のバッファに加え、バッファシーケンスを動作するように
buffer_size()関数を拡張。 buffer_copy()関数を追加。個々のバッファと、バッファシーケンスの間で生のバイトデータをコピーするのに使用できる。read(),read_at(),write(),write_at()のno throw版オーバーロードを追加。- 終了ハンドラが必要な型要件を満たさない場合のよりフレンドリーなコンパイルエラーを追加。C++0xの
static_assertが利用可能な環境で自動的にONになる(g++やVC10以降など)。BOOST_ASIO_DISABLE_HANDLER_TYPE_REQUIREMENTSをdefineすることでこのモードを無効にできる。 - SSL実装の書き直し。新たな実装は、高速コンパイル、パフォーマンスの大幅向上、カスタムメモリアロケートとハンドラの呼び出しをサポートする。証明書検証コールバックなどの新たなAPI関数が含まれていて、エラー報告機能の強化がある。新たな実装は、ほとんどの場合に古いソースに互換性がある。ただし、必要に応じて
BOOST_ASIO_ENABLE_OLD_SSLを定義することで以前の実装を使用する可能性がある(#3702, #3958)。 - AsioのSSL機能を使うために、あなたのプログラムにひとつのソースファイル
boost/asio/ssl/impl/src.hppを含める、というように、分割コンパイルサポートを変更した。 - SSL v2を明示的に無効化できるようにSSL実装を修正(#5453)。
is_loopback(),is_unspecified(),is_multicast()関数を、ip::address,ip::address_v4,ip::address_v6の全てで使用できるよう修正(#3939)。- ソケットやdescriptorでノンブロッキングの振る舞いを管理するための
non_blocking()関数を追加。non_blocking_ioという名前のio_controlコマンドは、この新たな関数によって非推奨(deprecated)となる。 - ソケットやdescriptorでノンブロッキングモードの基礎的なものをを管理するための、
native_non_blocking()関数を追加。この関数は、ソケットオブジェクトのユーザーに透過的な方法での非同期操作として、任意のノンブロッキングシステムコールのカプセル化を許可するものである。この関数は、ソケットやdescriptorの同期操作の挙動に影響を及ぼす。 - socket acceptorのための
io_control()メンバ関数を追加(#3297)。 - posix descriptorに
release()メンバ関数を追加。この関数は、ネイティブなdescriptorの所有権を解放する(#3900)。 - sequenced packet sockets(
SOCK_SEQPACKET)のサポートを追加。 io_serviceが停止しているかどうかを判定するためのio_service::stopped()関数を追加(reset()呼び出しは、run(),run_one(),poll(),poll_one()呼び出しの前に必要になる)。- C++0x標準ライブラリとの整合性のために、
native_typetypedefを非推奨とし、native_handle_typeを推奨とした。また、native()メンバ関数を非推奨とし、native_handle()メンバ関数を推奨とした。 - C++0xのmoveに対応。ソケット、シリアルポート、posix descriptor、Windowsハンドルのムーブコンストラクト、ムーブ代入に対応。
- (C++0xのmoveなどにより)ハンドラ関数オブジェクトのコピーを減らした。
fork()システムコールのサポートを追加。fork()を使用するプログラムは、io_service.notify_fork()を適切なタイミングで呼び出す必要がある。この機能の2つのサンプルを追加した(#3238, #4162)。close()システムコールによって報告されたエラーのクリーンアップ。ほとんどのオペレーティングシステムは、EWOULDBLOCKによってclose()が失敗するが、それはブロッキングモードを設定して呼び出しを再起動していない場合に起こる。その他のエラーの場合には、descriptorは閉じられると想定する(#3307)。asio::buffer()関数に、std::arrayのオーバーロードを追加。- その実装がBoostと同等以上である場合に、C++0x標準ライブラリの
array,shared_ptr,weak_ptr,atomicを使用するよう内部実装を修正。 - C++0x可変引数テンプレートが利用可能である場合に、Boost.Preprocessorによるオーバーロードの代わりにそちらの実装を使用するようにした。
- 例外の
what()メンバ関数で返されるメッセージに、関数名を含めるようにした。 - MinGWでの未初期化変数警告を修正。
shutdown_service()メンバ関数をprivateにした。- ソケットオプション関数のテストを追加。
- Boost.Asioの例でBoost.Threadを使用しないようにした。
- IPv4とIPv6のための、OSが提供するマクロへの依存をやめた(#3741)。
ip::basic_endpoint<>(と同じくip::tcp::endpointとip::udp::endpointも)のサイズを小さくした。- 任意のソケットやdescriptorが、
dup()を持っている場合にassign()を使用するようリアクターのバックエンドを変更し、リアクターの明示的な要件から削除(#4971)。 - 非推奨だったメンバ関数
io_service()を削除した。get_io_service()を使用するべきである。 ip::tcp,ip::udp,ip::icmpクラスから、非推奨だったtypedefであるresolver_query,resolver_iteratorを削除した。buffers_iterator<>とip::basic_resolver_iteratorのvalue_typeを非const byte型に修正。- g++の-Wshadowコンパイルオプションによる警告を修正(#3905)。
- 一部の環境でのコンパイラ警告を抑制するために、
FIONBIO定数をintに明示的にキャストするようにした(#5128)。 - acceptorの例で、エラーを許容するように修正(#5124)。
tick_count_timerの例での間違いを修正。signedなdurationを作るようにした(#5418)。
Config
- マクロの名称変更(#1988)
BOOST_NO_THREADEX->BOOST_HAS_THREADEXBOOST_NO_GETSYSTEMTIMEASFILETIME->BOOST_HAS_GETSYSTEMTIMEASFILETIME
DateTime
- サンプルの間違いを修正。typoなど(#4920)。
- ドキュメントにあるサンプルの変数名、関数名などの間違いを修正(#3651)。
- サンプルの間違いを修正。
end_of_month_day()->end_of_month()(#4845)。 - OpenVMSの64ビットプラットフォームサポートを追加(#4475)。
- GCC 4.3での
time_facetの警告を修正(#4952)。 time_serializeで、依存名に対してtypenameが付いていなかったのを修正(#5345)。- clangでの、二重カッコによる警告を修正(#5250)。
- valgrindプラットフォームでの警告を修正(#4798)。
- オーストラリアでの、夏時間の開始と終了が間違っていたので修正(#4754)。
- Australia/Euclaのタイムゾーンデータベースが間違っていたので修正(#4411)。
- SCCキーワードのエスケープに関するバグ修正(#5126)。
- タイムゾーンデータベースの、ファイルからの読み込みをサポート(#2475)。
- グローバルロケールを使用した場合に、
ymd_formatterで年が2,008のようにフォーマットされる問題を修正(#1674)。
Dynamic Bitset
- GCCで
-Wshadowコンパイラオプションを付けた際に出る警告を修正(#5439)。
Function
- GCCで
-Wold-style-castコンパイラオプションを付けた際に出る警告を修正(#3410)。 - MSVCでの未使用変数警告を修正(#3618)。
- Visual Age C++の古いバージョンのためのworkaroundに、新しいバージョン(
__IBMCPP__ >= 800)が適用されないよう修正。新しいバージョンでは、boost::functionの引数が11個以上使用できる(#3912)。 - VC10で、
function内部でboost::mem_fnが呼ばれるべきところを、ADLによってstd::mem_fnが探索されコンパイルエラーになっていた問題を修正(#4073)。 boost::functionに、関数の参照を持たせるためにboost::refでラップして渡すとコンパイルエラーになる問題を修正(#4325)。boost::function内部のstored_vtableが非constのために書き込み可能メモリに配置されてしまう問題を修正(#4717)。- 関数呼び出し演算子で、
inlineキーワードの書く場所を間違えていたので修正(#4765)。
Foreach
- C++0xムーブセマンティクスに対応。
Function Types
- バグ修正
Graph
- バグ修正
- 非推奨な関数であった
kolmogorov_max_flowを削除した。以降はboykov_kolmogorov_max_flowを使う。 - Boost.Type_Traitsに同等の機能があるため
<boost/graph/detail/is_same.hpp>ヘッダを削除した
- 非推奨な関数であった
Iostreams
Iterator
function_input_iterator追加 (#2893)- バグ修正
Lexical Cast
SourceとTarget型の特殊化を追加し、パフォーマンスとメモリ効率を改善した- ドキュメント更新
Logic
Math
- nonfinite facetを容易に追加するために、
changesign関数をsign.hppに追加した - Johan Rade氏によるnonfinite facetと、そのテスト、C99形式の無限大と
NaNでの利用例、およびドキュメントの追加 - Johan Rade氏による
changesignのテストとドキュメントの追加
Meta State Machine
- バックエンドに
stop()メソッドを追加 - Boost.Phoenix ファンクタのeUML表現を部分的にサポートした
- ステートスイッチングが発生した際に選択する可能性を考慮
- バグ修正
MultiIndex
- Boost.Refに関連する
composite_key_compareのADL問題を修正した - メンテナンス上の修正
Random
新たな標準(C++0x)に同期
- 多くの分布を追加:
chi_squared_distributionnegative_binomial_distributionfisher_f_distributionstudent_t_distributionweibull_distributionextreme_value_distributiondiscrete_distributionpiecewise_constant_distributionpiecewise_liear_distribution
- 名称変更:
uniform_int→uniform_int_distributionuniform_real→uniform_real_distribution
- 全ての分布クラスに以下のメンバを追加:
param_type,param, ストリーム演算子, 比較演算子,min,max - 分布クラスを、
variate_generatorを通さずに直接ジェネレータを使用できるようにした。 geometric_distributionとlognormal_distributionのパラメータの意味を変えた。gamma_distributionに第2パラメータを追加。seed_seqを追加し、対応するコンストラクタとseedオーバーロードジェネレータを追加。-generate_canonicalを追加。- エンジンテンプレートの名称変更。たとえば、
mersenne_twisterはmersenne_twister_engineとなる。 - 新たなエンジンアダプタ
independent_bits_engine。 - 新たな事前定義
typedefを追加:mt19937_64,ranlux[24|48][_base],knuth_b。 - シードアルゴリズムを更新。
discardを追加。- 全ての定義済みエンジンで、符合あり型の代わりに符号なし型を使用するようにした。
バグ修正
- 全てのケースで剰余演算が実装されていなかったので、
linear_congruential_engineがassertする可能性があった。shuffle_outputは整数オーバーフローを起こす可能性があったため、今はshuffle_order_engineを呼ぶようにした。 uniform_small_intは現在、ドキュメント通りに動作する。
その他変更
binomial_distributionとpoisson_distributionのための新たな効率的なアルゴリズム。- 全ての機能を
boost::random名前空間に移動。
下位互換性の問題
- シードアルゴリズムが変更した。これは標準との互換性のために避けられなかった。既存のいくつかのアルゴリズムに矛盾があったことは言うまでもない。
intによるシード:lagged_fibonacciとsubtract_with_carry(つまりranlux)を除くほとんどのジェネレータを変更する必要がある。- 別のジェネレータとジェネレータのシード:これは全てのジェネレータモデル
SeedSeqを作ることで有効になっている。したがって、非Boost.RandomジェネレータでBoost.Randomジェネレータのシードを使用した場合、それはコンパイルに成功しない。アルゴリズムが変更されたため、このシード処理のメソッドを使用したコードが異なる値を生成する。 - イテレータの組からシードを生成する:全てではないがいくつかの場所で、暗黙的に要素が32ビット整数であることを仮定する。この要件を追加し、それに応じてアルゴリズムを更新した。ジェネレータの
value_typeが32ビット以上の場合には、動作を変更する必要がある。
- 名称変更
- クラス名が変更されたものには、古い名前によるラッパーを用意した。また、名前空間が移動された全てのもののために、
boost名前空間でのusing宣言を行うようにした。 - 分布クラスのいくつかのアクセッサ名が変更された。古いものと新しいもの両方を使用できる。
- クラス名が変更されたものには、古い名前によるラッパーを用意した。また、名前空間が移動された全てのもののために、
geometric_distributionとlognormal_distribution:実行時に異なる動作をするようになった。これまでの動作をするboost::geometric_distributionとboost::lognormal_distribution、新たな動作をするboost::random::geometric_distributionとboost::random::lognormal_distributionを提供する。- ストリーミング:
gamma_distributionは新たなパラメータを持っているため、古いバージョンでストリーム演算子を使用して出力されたテキストを新しいバージョンで読み込むことはできない。 variate_generatorは現在、単なるラッパーである。ジェネレータの結果が分布の結果型と一致することを期待しているコードは動作しなくなる。これはBoost.Randomが提供する分布の問題ではない。- 戻り値の型:いくつかのジェネレータの
result_typeを変更した。標準に合わせて、いくつかの符号あり型は符号なし型に変更された。 has_fixed_range:これは常にfalseを返し、非常に有用ではあるが過度に複雑だった。最初にhas_fixed_rangeをチェックせずにconst_min,const_maxを使用していたのがはじめから間違いだった。
Proto
- コンパイルタイム改善のためにプリプロセス済みのマクロ(Pre-preprocessed)を用意した
- デフォルトのプリプロセッサ制限を引き上げた
- 式の引数の数(
BOOST_PROTO_MAX_ARITY)を5から10に増やした - 関数呼び出しの引数の数(
BOOST_PROTO_MAX_FUNCTION_CALL_ARITY)を5から10に増やした - 論理演算子の引数の数(
BOOST_PROTO_MAX_LOGICAL_ARITY)を8から10に増やした
- 式の引数の数(
- 不要な
proto::exprのインスタンス化を避けるためにproto::basic_exprをさらに統合した
Range
破壊的変更
irangeで、stepが2以上のときの終端の計算が間違っていたので修正(#5544)
Spirit
Spirit V2.5
Boost 1.47.0でリリースされるBoost.Phoenix V3に対応した。
これによってユーザーコードに影響を与えることはない。
Boost.Phoenix V3を有効にするには、Spiritのヘッダをインクルードする前に以下のプリプロセッサ定数を定義する必要がある。
# define BOOST_SPIRIT_USE_PHOENIX_V3 1
Qi or Karmaの新機能
- ジェネリックで、階層的で、抽象構文木を表すことができる動的なデータ構造であるutreeを追加。これはSpirit.QiとSpirit.Karmaに統合される。これはほぼすべての構文を解析の属性として渡すことができる。同時に、その属性を使用して出力を生成できる。
- 新たなマクロ
BOOST_SPIRIT_TERMINAL_NAMEは、2つのパラメータをとる(ターミナルの名前と型)。ターミナルの名前のみを引数にとるBOOST_SPIRIT_TERMINALマクロもあり、これは「ターミナル名 +_type」という型名を生成する。int_のような名前の場合にはint__typeのような、C++言語でシステムに予約されているダブルアンダーバーを含む型が生成されるので注意。 - 数値パーサーで2..10と16の基数を許可。
- プレースホルダー
_valが、トップレベルセマンティックルールの右辺で使用できるようになった。以下がその例である:
int i = 0;
BOOST_TEST(test_attr("456", int_[_val = _1], i) && i == 456);
この場合、parse() または phrase_parse() 関数に渡された属性の値 _val を指す。これはSpirit.Karmaでも同様に可能となる:
int i = 123;
BOOST_TEST(test("123", int_[_1 = _val], i));
この変更により_valプレースホルダーがどこでも使えるようになり、セマンティックアクションのルールが統一される。
- Spirit.Karmaに、2..36基数のunsigned numericジェネレータのサポートを追加。
Qi or Karmaのバグ修正
int_(10)のような整数リテラルのパース失敗時に入力を消費してしまう問題を修正mmap_file_iteratorの初期化に失敗する問題を修正(#5246)karma::real_policiesでconst浮動小数点数を使用する際のconstcorrectness問題を修正。パッチとテストを送付してくれたJeroen Habraken(a.k.a VeXocide)に感謝する。- Spirit.Qi
attr(attrib)パーサー, Spirit.Qisymbols<>パーサー, Spirit.Karmasymbols<>ジェネレータでのコンテナ属性のプロパティハンドルを修正。これはBoost V1.46.1で壊れていた(この問題を報告してくれたAaron Graham, Joerg Beckerに感謝する)。 - streamパーサーコンポーネントが成功したときに、もとになる入力ストリームのイテレータを正しく調整するようstream パーサーを修正。Stackoverflowで問題を報告してくれたBrian O’Kennedyに感謝する。
- アダプトされたADTを使用するときにKarma数値ジェネレータが失敗する問題を修正(問題を報告してくれたColin Rundelに感謝する)。 破壊的変更
- Spirit.Qi
repeatディレクティブが失敗した場合に値を残し、その属性のコミット/ロールバックのセマンティクスを実装した。同様のコンポーネントが矛盾している動作を削除した。この機能に依存する既存のコードは破壊される。コードを修正する方法は、Spirit.Qiholdディレクティブを参照。 - コンパイル時間を大きく低下させていた定義済みターミナルのインスタンス化を防ぐために、
BOOST_SPIRIT_NO_PREDEFINED_TERMINALSプリプロセッサマクロを追加した。BOOST_SPIRIT_NO_PREDEFINED_TERMINALSが定義されている場合は、ユーザーは必要なターミナルをインスタンス化する。したがって、using qi::uint_の代わりにqi::uint_type uint_のように書く。
Lexの新機能
lex::char_とlex::stringを使用して、トークンの定義を作成中にトークンのidを指定することを可能にした。両方のプリミティブはこの定義から生成されたトークンの要求されたトークンIDとして解釈され、2番目のパラメータを受け付けるようになった。- 新たなトークン型
lex::lexertl::position_token<>を追加。これは本質的には、既存のlex::lexertl::token<>によるプラグイン互換である。基になる入力シーケンスとして、iterator_rangeを指すイテレータのペアを格納する。
Lexのバグ修正
- アクションに添付されたトークン定義のすべての状態(状態名
"*"を使用する)を関連付けて問題を修正。
Making Stuff Work
- 属性がコンテナの場合(
traits::is_containerがtrueを返す属性)に、古いカスタマイズポイントtraits::extract_fromの代わりに呼び出される、Spirit.Karmaカスタマイズポイントtraits::extract_from_containerを追加。 hold_any型がテンプレート引数をとるようにした:basic_hold_any<Char>。Charは、ストリーム演算子(operator<<()とoperator>>())で使用される。hold_anyは、typedef basic_hold_any<char> hold_anyと定義される。- セマンティックアクションで属性の互換性がサポートされた。これは破壊的な変更だが、
#define BOOST_SPIRIT_ACTIONS_ALLOW_ATTR_COMPATで新しい動作を定義する必要がある。規定ではこれまでの動作である。 - 属性互換性の選択肢をサポート。
- シーケンス&コンテナコンポーネント(list, Kleene, Plus, repeat)のコンテナ属性のための属性ハンドリングが書き直された。これによって多くの場合に予測可能な動作をするようになった。Thomas Taylor, Richard Crossley, Semen, Adalberto Casteloそして問題を報告し、支援してくれた方々に感謝する。
Tokenizer
- Visual Studio で
/W4にてビルドすると、warning C4127(条件文が定数)がでる問題を修正(#4699)
Utility
- Visual Studio 2010でwarning number 4284がなくなったことによるwarningの抑制(#4432)
Uuid
- 例外を無効にした場合に
string_generator.hppがコンパイルエラーになる問題を修正(#5570) - VC8での暗黙の型変換警告を修正(#4601)。
- GHSコンパイラ(Green Hills Compiler)でこのライブラリが動作するようにした(#4991)。
- 論理演算子周りの警告を修正(#5145)。
- uuidのテストに、まだリリースされていない
lightweight_test_ex.hppを使用していたので修正(#5235)。
Wave
V2.3.0
#pragma wave option()のプリプロセス後、連続した文字列リテラルを一つにまとめるようにした。- 空白文字のハンドリングを修正し、そのテストを追加 (
t_9_020.cpp)。 - 新しいプリプロセスフック
locate_include_fileを追加。インクルードするファイルの決定方法をカスタマイズできる。 - Wave コマンドに新しいオプション
--noexpand/-Nを追加。指定した名前のマクロ(オブジェクト形式でも関数形式でもOK)の展開を抑制できる。このオプションは、出力結果中のマクロ全部が実行されないだけでなく、Wave自身からもその存在が消されるので、よく考えて使うべきである。もし展開を抑制されたマクロがあとでどこかの#ifdefに影響がある場合、予期しない結果を引き起こす可能性がある。 - Wave コマンドの対話モードで、定義された全マクロをコマンドラインに出すのを修正。
- #5554 の修正 (wave slex parser が
eolの前にeofを見つけると最終行を処理しない問題)。 - コンパイル時のオプション設定に、
BOOST_WAVE_WCHAR_T_SIGNEDNESSを追加。これにはBOOST_WAVE_WCHAR_T_AUTOSELECT,BOOST_WAVE_WCHAR_T_FORCE_SIGNED, またはBOOST_WAVE_WCHAR_T_FORCE_UNSIGNEDを指定できる。デフォルトは auto select. #pragmaのオプション (output) を付けて実行した Wave コマンドがすぐに終了した場合、上書きせずに追記してしまう問題を修正。- #5569 を修正 (slex の CONTLINE が LF で改行するファイルでしか動かない)。
BoostBook
- doxygenタグをハンドル :
\see,tparam,ref(クラスのみ) - クラスと関数のメモをサポート
Quickbook
- 見出しの一貫性あるID生成
- WindowsでのUnicodeサポートを改善
- 移植性のないWindowsのパスで警告を出力するようにした
[br]の非推奨を取りやめ- copyright属性で、日付の範囲と、カンマ区切りされた節をサポート
- 簡単なマークアップ(例えばbold)のために、区切り文字のチェック機能を改善
- コードスニペット内でのコメントをそのまま使用するようにした
__FILENAME__マクロが相対パスを生成するようにした- コード内でエスケープによる強調表示を許可
テスト済みコンパイラ
主要テストコンパイラ:
-
Linux:
- LLVM Clang 2.8
- GCC: 3.4.6, 4.2.4, 4.3.4, 4.3.5, 4.4.1, 4.4.3, 4.4.5, 4.5.1, 4.5.2, 4.6.0, 4.6.1
- GCC, C++0x mode: 4.3.4, 4.4.3, 4.5.2
- Intel 12.0
-
OS X:
- Apple Clang 2.1
- Intel 11.1
- GCC: 4.2.1, 4.4.4
- GCC, C++0x mode: 4.4.4
-
Windows:
- Visual C++ 7.1, 9.0, 10.0
- GCC, mingw: 4.4.0
-
FreeBSD:
- GCC 4.2.1, 64 bit
- QNX:- QCC
追加のテストコンパイラ:
-
Linux:
- Clang from subversion, with GNU libstdc++.
- LLVM Clang 2.8
- GCC: 3.4.6, 4.2.4, 4.3.4, 4.3.5, 4.4.3, 4.4.5, 4.5.1, 4.5.2, 4.6.0, 4.6.1
- GCC, C++0x mode: 4.3.4, 4.4.3, 4.5.2
- pgCC: 11.2
- Intel: 10.1, 11.0, 11.1, 12.0
- PathScale: 3.2
-
OS X:
- Clang from subversion, with GNU libstdc++.
- Intel 11.1
- GCC: 4.4.4
- GCC, C++0x mode: 4.4.4
-
Windows:
- Visual C++ 7.1, 9.0, 10.0
- Visual C++ with STLport: 9.0
- Visual C++, Windows Mobile 5, with STLport: 9.0
- GCC, mingw: 4.5.2
- GCC, C++0x mode, mingw: 4.5.2
-
AIX:
- IBM XL C/C++ Enterprise Edition, V11.1.0.0
翻訳
Akira Takahashi, zakkas783, digitalghost, yak_ex