本家リリースノート:
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