本家リリースノート:
http://svn.boost.org/svn/boost/website/public_html/beta/feed/history/boost_1_49_0.qbk
新ライブラリ
- Heap
- 優先順位付きキューデータ構造の実装
- 作者:Tim Blechmann
更新ライブラリ
- Asio
- Chrono
- Container
- Filesystem
- Geometry
- Graph
- Icl
- Interprocess
- Intrusive
- Lexical cast
- Locale
- Move
- Property Tree
- Spirit
- Thread
- Unordered
- Uuid
Asio
- C++11の
Clock要件に基づく新たなクラステンプレートbasic_waitable_timerを追加。C++11<chrono>ライブラリのクロックや、Boost.Chronoのクロックを使用することができる。high_resolution_timer、steady_timer、system_timerという名前のtypedefは、標準クロックのオブジェクトを生成して使用する。 - Windowsカーネルオブジェクトに対して待機を実行するための
windows::object_handleクラスを追加。この機能の開発に貢献してくれたBoris Schaelingに感謝する。 - Linux上において、
connect()関数が特定の状況でEAGAINを返すことを可能にした。エラーマッピングを修正(#6048)。 - NetBSDでのコンパイルエラーを修正(#6048)
- Mac OS X上でのデッドロックを修正(#6275)
- バッファストリームの書き込みが壊れていた問題を修正(#6310)
- Windows上で、
io_serviceが何もせず繰り返し実行される場合に、非ページプールの(メモリ)リークを起こしていた問題を修正(#6321)。 - 以前の変更によってマルチスレッド環境下で競合状態が発生したため、この変更を撤回した。このため危険な操作をロックなしに実行できるようになっている。
- 2つの
bufferからなる配列があった場合、0番目のbufferが空だと、1番目のbufferが無視される可能性があった問題を修正。
Chrono
- 非整数型の
durationでのIOでコンパイルエラーが出ていた問題を修正(#6092) durationの入力ストリームにおいて、単数形が入力されると失敗する問題を修正(#6093)BOOST_CHRONO_HEADER_ONLYが定義されている場合に、シンボルの重複によるリンクエラーが発生する問題を修正(#6113)- Sandia-pgi-11.9において、
/libs/chrono/test/../example/min_time_point.cpp中のmin関数の使用がコンパイルエラーになる問題を修正(#6243) - Linux/Mac上において、
process_cpu_clock::now()がマイクロ秒ではなくナノ秒を使用するように修正(#5909, #6257)
Container
at()ドキュメントの要件が逆だった問題、および例外を投げる条件のドキュメントが間違っていた問題を修正(#6499)。flat_map::emplaceの戻り型がドキュメントと一致していない問題を修正(#6336)allocator_traitsでvoidへの参照ができる問題を修正(#6335)- gccで
-enable-symvers=gnu-versioned-namespaceのあるなしに関わらずハードコードした前方宣言が機能しない問題を修正 (#6287) - ドキュメント修正(#6205)
- STLPort使用時に、Interprocessにある
char_traitsの前方宣言がC4099警告を起こす問題を修正(#4383) - 内部の
allocator_traitsのクローンを使って、C++11/03のいずれのコンパイラでもallocator_traitsが利用できるようにした
Filesystem
バグ修正
- テストケースの追加。自インスタンス自体(もしくは部分)をソースとするような代入や伸長をした場合にパスがエラーになる問題を修正(#3714)
Localeのcodecvt_facetがWindows環境でスレッドセーフではない。WindowsとMac OS Xのlocaleとcodecvt facetをネームスペーススコープに戻した。OS Xを除くPOSIX環境はもし環境変数が間違っていた場合に例外をキャッチできるように、またもし実際に使用されない場合locale("")の使用を避けることができるようにlocal static initializationを利用する(IE lazy)(#4889), (#6320)- 循環するシンボリックリンクに対する
recursive_directory_iteratorが失敗する。パッチを送ってくれたDaniel Aarnoに感謝する(#5652) recursive_directory_iterator(error_code)がまだfilesystem_error例外を送出していた(#5653)- Windows環境で
errorが例外送出されたとき、directory_iteratorがアクセス違反になる(パッチを送ってくれたAndreas Ecklederに感謝)(#5900) error_codeを引数にとるdirectory_iteratorの構築時にec実引数が渡されることなくインクリメントが呼び出されてしまうバグを修正(#5900 comment 2)- このチケット自体は問題なかったが、テストスィートの
path_test.cppのコードとドキュメントをわかりやすく修正した。すなわち、pathにまたがるiterationは一般的な形式を返す(#5989) - Windows環境下での
codecvt処理が参照するコードページをCP_THREAD_ACPからCP_ACPに変更(#5592) - PGIコンパイラのために作業関数を修正した。Noel Belcourtに感謝する
- パーミッション・テストの基準を現実に即して(特にSandiaテストプラットフォームに合わせて)緩和した
Geometry
バグ修正
- multi-geometriesの距離が、特定のdistance strategyで無視される
polygon/multi_polygonの差異(2011/10/24にGGL-listに投稿された)multi-geometrie(s)のいずれか一点が空の場合、距離を計算すると例外が送出される- Multi DSVが正しくセッティングを反映していない
- 自己交差がまれに失われる(1.48で発生した)
- 空のrangeに対する凸包がクラッシュする(例えば、空の
multi pointで)
チケット消化
機能追加
line/polygonの交差と差をサポートしたsegment/boxの、異なるpoint型の変換をサポートしたmulti pointへの追加をサポートした- スカラ関数(
distance,area,length,perimeter)が空の入力に対しempty_input_exceptionを投げるようにした
ドキュメント
- サポート状態を更新した
内部修正
distance/convert/assign/areaについてのspecializations/not_implementedを更新した- ドメインを冗長にするために、
wktとdsvをioフォルダへ移動した - clangでの警告を抑制するために
Strategyコンセプトを0に割りあてた(Vishnuのパッチを適用)
Graph
バグ修正
degree_vertex_invariant::maxの実装が間違っていた(#5881)biconnected_components(…)で計算した低点マップが稀に間違っている(#6033)prim_minimum_spanning_treeのドキュメントのend forが抜けている(#6061)reverse_graph_edge_descriptor型の演算子に抜けがある(#6137)chrobak_payne_drawing.hppが<stack>をインクルードしていない(#6246)kamada_kawai_spring_layoutにデバッグ出力用のコードが残っている(#6239)- BGLの
function_requires(非推奨)をBOOST_CONCEPT_ASSERTに置換(#6293) boost:edge(u, v, reverse_graph)が非reverse graphのedge_decriptorを返す(#6306)- trunkにある
reverse_graphが動作するように修正(#6313) directed_graph/undirected_graphでコンパイルエラーが発生する(#6371)
およびTracに含まれていないもの
- 再度LEDA graphサポートを有効にした(パッチを作ったJens Mullerに感謝する)
edge_predecessor_recorderのドキュメント追加
Icl
- 特定の開区間について
boost::icl::is_emptyが失敗する(#6095) - 区間のカスタマイズをするとコンパイルエラーになる(#6210)
- ムーブコンストラクタ、ムーブ代入演算子、ならびに二項演算子にムーブセマンティクスを導入した
Interprocess
- GCC用の属性名にアンダースコア追加(#6412)
- Windowsで
intermodule_singletonがクラッシュする(#6398) - gcc 3.4.6で
message_queueが"ambiguous class template instantiation"(無名クラステンプレートのインスタンス化)によりコンパイルできない(#6319) - gccで
-enable-symvers=gnu-versioned-namespaceのあるなしに関わらずハードコードした前方宣言が機能しない(#6287) managed memory segment上にSTLコンテナが構築できない(#6265)scoped_ptr::reset(p, d)でdeleterが構築されない(#6233)message_queueサンプルが32-bitでコンパイルできない(#6147)- boost 1.48.0 interprocessがFreeBSD環境下でコンパイルできない(#6134)
semaphore_timed_wait()の挙動がglibcのsem_timedwait()と一貫性がない(#6058)- OSX上でx86からx64(およびその逆)のShared Memoryの読み込みに失敗する(#6054)
boost::interprocess::message_queueクラスリファレンスのtypoを修正(#5772)- デフォルトコンストラクトした
mapped_regionのアドレスがNULLでない(#5738) - `interprocess::named_semaphore::removePの戻り値がPOSIX環境で逆になっている(#5622)
get_wmi_class_attribute関数がwindows server 2003でハングする(#5552)- Boost.Interprocessの
scoped_ptrはdetail::do_swapを要求するが、detail/utilities.hppがインクルードされていない(#5518) shared_memory_object::remove関数が成功時にfalseを返している(#4655)NDEBUG指定するとinterprocess::managed_mapped_fileでsegvが発生する(#4452)- STLPort使用時に、Interprocessにある
char_traitsの前方宣言がC4099警告を起こす問題を修正(#4383) - "enumeral and non-enumeral type in conditional expression"警告の抑制(#4297)
mutex実装でのtimed functionがPOSIXの要求を満たすように修正した:どんな状況においても、mutexが即時にロックできない場合、この関数がタイムアウトで失敗してはならない。mutexが即時にロックできない場合、abs_timeoutパラメータの有効性をチェックする必要はない。
Intrusive
detail/memory_util.hppが余計な;があるためエラーになる(#6347)splice/splice_afterに関するドキュメントの間違いを修正(#6223)intrusive::unorderedと-std=c++0xの組み合わせでコンパイルエラーになる(#6153)
Lexical cast
バグ修正ならびに警告解消
- Androidプラットフォームで
lexical_cast(wchar_t)のコンパイルができない(#6127) Sourceがvoid*のとき、コンパイルできない(#6132)cwcharがないプラットフォームで、lexical_castがコンパイルできない(#6159)- 不完全型への変換でコンパイルエラーが発生するようになった(#6182)
- VS2005
/Zc:wchar_tオプション付きでコンパイルできない(#6186) lexical_castのオーヴァーフロー処理が正常に動作しない場合がある(#6193)- ある条件下でユーザー型から
ostreamへの変換関数を与えてもlexical_castがbad_lexical_cast例外を送出するようになった(#6264) - 64ビット環境下での警告抑制(#6290)
vectorからostreamへの変換関数を与えても、vectorが空の場合にbad_lexical_cast例外が送出される(#6298)- gcc3.4.4(cygwin)環境下で
BOOST_NO_STD_WSTRINGがマクロ定義されている場合に、lexical_cast内でBOOST_LCAST_NO_WCHARが定義されるためコンパイルエラーになる(#6400)
Locale
- 不正な入力シーケンスの検出時に
MultiByteToWideCharを不正に使用していた問題を修正
Move
バグ修正
inlineが複数書いてあってGCCの-std=c++11モードでコンパイルエラーになっていた問題を修正(#6417)swapのドキュメントに戻り値の型が記載されていなかった問題を修正(#6183)- MSVCで、セキュリティ関連のデバッグモードに関するマクロの書き方が間違っていたので修正(#6185)
- いくつかの関数に
inline指定がされていなかったので修正(#6395) - クラステンプレートのテンプレートパラメータTに対してムーブコンストラクタを定義しようとするとコンパイルエラーになる問題を修正(#6396)
Property Tree
- XMLの書き込みで、適切な
attributeエンコーディングが使用されない(#4840) nullが埋め込まれたフィールドがあると、そこで文字列が途切れてしまう(#5259)rapidxml.hppにあるalloc_funcのtypedefをVC++系のコンパイラが探索できない(#5281)- プリミティヴ型をデータとして使う場合にコンパイルエラーになる(#5944)
boost::property_tree::ptree_bad_data::data<T>()関数はconstであるべき(#5757)ptree::sort()がコンパイルエラーになる(#5710)- Intel Compiler XEおよびVS 2010でProperty Treeがコンパイルエラーになる(#5307)
Spirit
Spirit 2.5.2
- Vitaly Budovskiのパッチを統合し、2進浮動小数点数のパーサーとジェネレータを追加
- レキサの
stream typeがwchar_tだった場合に、lex::lexertl::generate_static_dfaがコンパイルエラーになる問題を修正(#6253) qi::token(min, max)もしくはqi::tokenid(min, max)を使用してレキサで解析した際に、トークンの範囲にマッチすることを可能にした。どちらのパーサーも、範囲[min, max]のあらゆるトークンIDにマッチする。sequence、Kleene,list,plusなどのような複合ジェネレータでcenter(num)[a]とcenter(num, g)を使用する際の問題を修正repository::karma::subruleが壊れていたので修正(Lee Clagettのパッチに感謝する)- Spirit.Karmaのサンプルを修正(Lee Clagettのパッチに感謝する)
multi pass iteratorのclear_queueで、checkingポリシーはクリアしても、storageポリシーはクリアしてなかったので修正(#6368)- Spirit.Karmaにおいて、コンテナを保持しているバリアントをシーケンス(
>>)の中でジェネレータとして使用した際の問題を修正
Thread
バグ修正
- GCCのシンボル可視化に対応(#2309)
- ロックのオプションに関するドキュメントを記載(#2639)
- LinuxのSun 5.9でコンパイルが通らない問題を修正(#3639)
- winscw(CodeWarrior)でコンパイルが通らない問題を修正(#3762)
- Boost.ThreadとネイティブスレッドAPIとの組み合わせに関するドキュメントを記載(#3885)
promise::set_wait_callback()のドキュメントで誤記があったので修正(#3975)boost::thread::idのストリーム出力の際のフォーマット設定に、io_state_saverを使用するようにした(#4048)- 不要なシンボル可視化の指定により警告が出ていたのを修正(#4315)
- OpenVMSのDECCXXコンパイラで動作するようworkaroundを導入(#4480)
thread_refのoperator<=のドキュメントで「operator>=」と誤記していたので修正(#4819)future.hppがVisual C++環境で/clrオプションを付けるとコンパイルエラーになる問題を修正(#5040)- C++0x環境でBoost.Threadを使用すると、
try_lock/lockでクラッシュする問題を修正(#5423) shared_mutexのtimed_lock/lock_sharedで競合が発生する問題を修正(#5502)shared_mutexがWindows CE環境で動作するようにした(#5594)- Intel Compiler環境で、
thread::idのコピーコンストラクトができないというコンパイルエラーを修正(#5617) - 未使用変数警告を修正(#5739)
- スレッドの生成に失敗した際にリソースリークが発生していた問題を修正(#5826)
ThreadProxyで例外が発生するとリソースリークする問題を修正(#5839)- GLIBCシステム上で
hardware_concurrency()を計算するのにget_nprocs()を使用するようにした(#6100) - Boost.ThreadとBoost.Moveを一緒に使用すると発生するコンパイルエラーを解消(#6141)
recursive_mutexのconfigマクロ名をtypoしていたので修正(#6168)unique_lockがSunStudio環境でコンパイルエラーになっていた問題を修正(#6175)condition_variableとmutexが、EINTRシグナルが発生した場合にエラーになる問題を修正(#6200)- Clang 3.0のC++11モードで、
shared_lockがコンパイルエラーになっていた問題を修正(#6207) - Clang 3.0のC++11モードで、
try_lock_wrapperがコンパイルエラーになっていた問題を修正(#6208)
Unordered
- コンパイラがムーブに対応していない場合、デフォルトではBoost.Moveによるエミュレーションを行わないようにした。有効にしたい場合は、
BOOST_UNORDERED_USE_MOVEでdefineする(#6167, #6311)。Boost.Moveがまだ、要素の型に関わらずムーブしてしまうための対処。 unordered_map::iteratorのインクリメントで発生するGCCの警告を修正(#6370)- 古い標準ライブラリを使用してC++11のサポートを強化。
Uuid
- Clang 3.0での、
intからunsigned intへの暗黙の型変換で出ていた警告を修正(#6258) - SHA1の実装として、長いメッセージの処理に対応(#5325)
- GCCでの、random_generatorで出ていた警告を修正(#6118)
テスト済みコンパイラ
- Linux:
- Intel: 11.1
- LLVM Clang 2.8
- GCC: 3.4.6, 4.2.4, 4.3.4, 4.4.3, 4.5.2, 4.6.2
- GCC, C++0x mode: 4.3.4, 4.4.3, 4.5.2
- OS X:
- Intel: 11.1
- GCC: 4.2.1, 4.4.4
- GCC, C++0x mode: 4.4.4
- Windows:
- Visual C++ 8.0, 9.0, 10.0
- GCC, mingw: 4.4.0, 4.4.7, 4.5.4, 4.6.1, 4.7.0
- FreeBSD:
- GCC 4.2.1, 32 and 64 bit.
- QNX:
- QCC, C++0x mode: 4.4.2, 4.6.1, 4.6.2
追加のテストコンパイラ
- Linux:
- GCC: 4.2.4, 4.3.4, 4.4.4, 4.5.2, 4.6.2
- GCC, C++0x mode: 4.3.4, 4.4.4, 4.5.2
- pgCC: 11.9
- Intel: 10.1, 11.1, 12.0
- PathScale: 4.0.8
- Visual Age 10.1
- OS X:
- Clang from subversion
- Intel 11.1, 12.0
- GCC: 4.4.4
- GCC, C++0x mode: 4.4.4
- Windows:
- Visual C++ 8.0, 9.0, 10.0
- Visual C++ with STLport: 9.0
- Visual C++, Windows Mobile 5, with STLport: 9.0
- GCC, mingw: 4.4.0, 4.5.2
- GCC, C++0x mode, mingw: 4.5.2
- GCC, mingw 64-bit: 4.4.7, 4.5.4, 4.6.1
- AIX:
- IBM XL C/C++ Enterprise Edition, V11.1.0.0
- FreeBSD:
- GCC 4.2.1, 32 and 64 bit
- Solaris:
- Sun 5.10
翻訳
Akira Takahashi, zak, Norihisa Fujita