Boost 1.59.0がリリースされました。リリースノートはいつものように、boostjpサイトで翻訳を行い、公開しています。
新ライブラリ
Boostには以前からlexical_cast()
という強力な数値・文字列間の変換関数がありました。このライブラリは、それをより強力にした機能が多数入っています。
たとえば、型変換の際に使用するマニピュレータを指定できるようになったので、基数(2進数、16進数とか)の指定、浮動小数点数の精度の指定などができます。ほかにも、変換に失敗したときのエラー処理も、選択の幅が広がったりしています。
C++14で書かれたコルーチンライブラリです。前バージョンは非推奨となります。
主な更新内容
少し前にこのブログで紹介した、ranked indicesという新しいインデックスが追加されました。参照:「Boost.Multi-index ランク付きインデックス」
Boost.Testがバージョン3にメジャーアップデートしました。
これまでは、BOOST_CHECK_EQUAL(a, b)
のように、比較演算子ごとにマクロを使い分けていましたが、このバージョンから汎用的なテストマクロとしてBOOST_TEST
が追加されました。
BOOST_TEST(a == b)
のように、演算子で直接比較ができ、失敗した時のエラーメッセージもこれまで通り、比較対象の「値」(変数名ではない)が出力されます。Power Assertと呼ばれているものですね。
#define BOOST_TEST_MODULE example #include <boost/test/unit_test.hpp> BOOST_AUTO_TEST_CASE(a_equal_b_test) { int a = 1; int b = 2; BOOST_TEST(a == b); }
Running 1 test case... main.cpp:8: error: in "a_equal_b_test": check a == b has failed [1 != 2] *** 1 failure is detected in the test module "example"
そのほか、パラメタライズドテストのサポートも追加されています。Boost.Testでは、Data driven test(データ駆動テスト)と呼ばれています。