Boost tour 1.60.0

Akira Takahashi
Akira TakahashiProgrammer en Preferred Networks, Inc.
Boostライブラリ一周の旅
Ver 1.59.0 ∼ 1.60.0
高橋 晶(Akira Takahashi)
faithandbrave@gmail.com
2015/12/05 Boost.勉強会 #19 東京
はじめに
• Boostに興味はあるけど、触ったことがない
• バージョンアップについていけなくなった
• Boostの全容を知りたい
この発表は、以下のような方を対象にして、
Boost 1.60.0時点での、なるべく全てのライブラリの
概要を知ってもらうためのものです。
この資料は、バージョン間の差分を紹介するものですが、

これまでの資料をマージしたバージョンも公開します。
バージョンアップの詳細
• boostjpサイトでは、Boostのリリースノートを翻訳したもの
を公開しています
• http://boostjp.github.io/document/version.html

この階層以下に、各バージョンのリリースノートがあります
• 本家のリリースノートよりもくわしく書いています
• チケットタイトルを直訳するのではなく、問題と修正の内容
を確認して書いています
• 新機能が入った際には、ドキュメントから概要と

サンプルコードを持ってきたりもしています
• 本家より優れたものを作ることが目的ではなく、日本語で

情報を届けるのに適したやり方として情報補完をしています
Boostとは
• 標準ライブラリに満足できなかった人たちが作っている、

C++の準標準ライブラリ。
• Boostから標準ライブラリに、多くの機能が採用されている
• 普段のプログラミング全般で使える基本的なものから、

専門的なものまで、いろいろなライブラリがある。
• ライセンスはBoost Software License 1.0
• 無償で商用利用可能
• 著作権表記の必要なし
• ソースコードの改変自由
本日紹介するライブラリ
• Convert
• VMD
• Test V3
質問は随時受け付けます
• この発表では、3ライブラリの紹介をします。
• 1ライブラリに付き、(ほぼ)ひとつのサンプルコードで

解説する、というスタイルです。
• 発表時間に余裕があるので、随時質問してください。
Convert 1/3
boost::lexical_cast()を置き換えて使用できる、数値と文字列の

型変換ライブラリ。
変換失敗時の挙動、基数や精度、フォーマットなどを設定できる。
戻り値の型はboost::optional<T>。
namespace cnv = boost::cnv;
!
// 文字列"123"をint型に変換する
// コンバータにはcstreamを使用する
cnv::cstream converter;
boost::optional<int> result =
boost::convert<int>("123", converter);
コンバータクラスはいくつか用意されており、現在正式にサポートされて
いるのは、lexical_castと(c|w)streamの2つ。
コンバータを別定義できるので、文字コードの変換にも利用できる。
Convert 2/3
変換失敗時のエラーハンドリングは基本的に、
戻り値であるboost::optional<T>オブジェクトに対して行う。
boost::cnv::cstream converter;
!
// 変換後にoptionalの中身を取り出す。
// 変換失敗時はboost::bad_optional_access例外が送出される
int result2 = boost::convert<int>("123", converter).value();
!
// 変換失敗時に-1が返される
int result3 = boost::convert<int>("xxx", converter).value_or(-1);
Convert 3/3
基数や精度、フォーマットの設定は、標準ライブラリのマニピュレータと、
Boost.Convertが定義しているパラメータの、2種類が使用できる。
マニピュレータに指定は、コンバータの関数呼び出し演算子を使用する。
// 標準のマニピュレータ
cnv::cstream converter;
int result1 = boost::convert<int>(
" ff",
converter(std::hex)(std::skipws) // 16進数、スペースを無視
).value(); // result == 255
!
// Boost.Convertのマニピュレータ
int result2 = boost::convert<int>(
"ff",
converter(arg::base = cnv::base::hex) // 16進数
).value(); // result == 255
VMD (Variadic Macro Data Library)
可変引数マクロを使用した、プリプロセッサメタプログラミングの

ライブラリ。Boost.Preprocessorを強化するためのもの。

各種データ型と、それをテスト・解析する機能が提供される。
#define SEQ 1 2 3
#define SEQ_SIZE BOOST_VMD_SIZE(SEQ)
!
void f(int a, int b, int c)
{ std::cout << a << " " << b << " " << c << std::endl; }
!
// 要素数を取得
std::cout << SEQ_SIZE << std::endl; // 3
!
// シーケンスをカンマ区切りパラメータに変換
f(BOOST_VMD_ENUM(SEQ));// 「1, 2, 3」に変換される
Test v3
Boost.Testがバージョン3にメジャーアップデートした。
汎用的なテストマクロBOOST_TESTが追加された(Power Assert)。
パラメタライズドテストに対応した。ドキュメントが読みやすくなった。
BOOST_AUTO_TEST_CASE(equal_test)
{
int a = 1;
int b = 2;
BOOST_TEST(a == b); // これまではBOOST_CHECK_EQUAL(a, b)と書いてた
}
Running 1 test case...
main.cpp:8: error: in "equal_test": check a == b has failed [1 != 2]
!
*** 1 failure is detected in the test module "example"
本日の紹介はここまで
• 今回の「Boostライブラリ一周の旅」では、

Boost 1.59.0から1.60.0までの更新を紹介しました。
• 発表では差分のみを紹介していますが、

これまで紹介したものをマージした資料も公開しています。
• 今回Boostに興味を持たれた方は、そちらのマージした資料
もぜひご覧ください。
1 de 12

Recomendados

Boost Tour 1_58_0 por
Boost Tour 1_58_0Boost Tour 1_58_0
Boost Tour 1_58_0Akira Takahashi
2.5K vistas17 diapositivas
Boost Overview por
Boost OverviewBoost Overview
Boost OverviewAkira Takahashi
2.2K vistas17 diapositivas
Flash lite概要 por
Flash lite概要Flash lite概要
Flash lite概要Toshiharu Shirai
781 vistas7 diapositivas
マスタリング バベル por
マスタリング バベルマスタリング バベル
マスタリング バベル道化師 堂華
1.5K vistas39 diapositivas
LT駆動開発08 - 無限のディスク領域を手に入れよう(妄想編) por
LT駆動開発08 - 無限のディスク領域を手に入れよう(妄想編)LT駆動開発08 - 無限のディスク領域を手に入れよう(妄想編)
LT駆動開発08 - 無限のディスク領域を手に入れよう(妄想編)Kazuya Matsubara
676 vistas16 diapositivas
Boost tour 1.60.0 merge por
Boost tour 1.60.0 mergeBoost tour 1.60.0 merge
Boost tour 1.60.0 mergeAkira Takahashi
5.1K vistas119 diapositivas

Más contenido relacionado

Destacado

Study3 boost por
Study3 boostStudy3 boost
Study3 boostKohsuke Yuasa
1.7K vistas45 diapositivas
クソザコ鳥頭が非順序連想コンテナに入門してみた por
クソザコ鳥頭が非順序連想コンテナに入門してみたクソザコ鳥頭が非順序連想コンテナに入門してみた
クソザコ鳥頭が非順序連想コンテナに入門してみたMitsuru Kariya
6.6K vistas106 diapositivas
女性のためのC++コミュニティ Ladies++ por
女性のためのC++コミュニティ Ladies++女性のためのC++コミュニティ Ladies++
女性のためのC++コミュニティ Ladies++cocodrips
1.8K vistas9 diapositivas
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines por
Boost.勉強会#19東京 Effective Modern C++とC++ Core GuidelinesBoost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core GuidelinesShintarou Okada
13.1K vistas133 diapositivas
Siv3Dで楽しむゲームとメディアアート開発 por
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Ryo Suzuki
7.8K vistas71 diapositivas
ABC2015 Summer LT por
ABC2015 Summer LTABC2015 Summer LT
ABC2015 Summer LTKensuke Onishi
533 vistas12 diapositivas

Destacado(20)

クソザコ鳥頭が非順序連想コンテナに入門してみた por Mitsuru Kariya
クソザコ鳥頭が非順序連想コンテナに入門してみたクソザコ鳥頭が非順序連想コンテナに入門してみた
クソザコ鳥頭が非順序連想コンテナに入門してみた
Mitsuru Kariya6.6K vistas
女性のためのC++コミュニティ Ladies++ por cocodrips
女性のためのC++コミュニティ Ladies++女性のためのC++コミュニティ Ladies++
女性のためのC++コミュニティ Ladies++
cocodrips1.8K vistas
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines por Shintarou Okada
Boost.勉強会#19東京 Effective Modern C++とC++ Core GuidelinesBoost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Shintarou Okada13.1K vistas
Siv3Dで楽しむゲームとメディアアート開発 por Ryo Suzuki
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発
Ryo Suzuki7.8K vistas
boost::shared_ptr tutorial por NU_Pan
boost::shared_ptr tutorialboost::shared_ptr tutorial
boost::shared_ptr tutorial
NU_Pan2.9K vistas
The Earth is not flat; but it's not round either (Geography on Boost.Geometry) por Vissarion Fisikopoulos
The Earth is not flat; but it's not round either (Geography on Boost.Geometry)The Earth is not flat; but it's not round either (Geography on Boost.Geometry)
The Earth is not flat; but it's not round either (Geography on Boost.Geometry)
Boost勉強会 #10 ディスカッションまとめ por Sigureya
Boost勉強会 #10 ディスカッションまとめBoost勉強会 #10 ディスカッションまとめ
Boost勉強会 #10 ディスカッションまとめ
Sigureya1K vistas
Glfw3,OpenGL,GUI por hira_kuni_45
Glfw3,OpenGL,GUI Glfw3,OpenGL,GUI
Glfw3,OpenGL,GUI
hira_kuni_453.1K vistas
3DCAD@VDI活用とCADデータ管理のロードマップ por Dell TechCenter Japan
3DCAD@VDI活用とCADデータ管理のロードマップ3DCAD@VDI活用とCADデータ管理のロードマップ
3DCAD@VDI活用とCADデータ管理のロードマップ
Dell TechCenter Japan4.7K vistas
ゲーム開発経営ゲーム por Yuki Miyatake
ゲーム開発経営ゲームゲーム開発経営ゲーム
ゲーム開発経営ゲーム
Yuki Miyatake1.8K vistas
3D CADと3Dプリンタ体験セミナー #1 por Kou Ouchi
3D CADと3Dプリンタ体験セミナー #13D CADと3Dプリンタ体験セミナー #1
3D CADと3Dプリンタ体験セミナー #1
Kou Ouchi2.6K vistas
Unity MeshとColliderについて por Self Norl
Unity MeshとColliderについてUnity MeshとColliderについて
Unity MeshとColliderについて
Self Norl6.7K vistas

Más de Akira Takahashi

Cpp20 overview language features por
Cpp20 overview language featuresCpp20 overview language features
Cpp20 overview language featuresAkira Takahashi
891 vistas28 diapositivas
Cppmix 02 por
Cppmix 02Cppmix 02
Cppmix 02Akira Takahashi
675 vistas7 diapositivas
Cppmix 01 por
Cppmix 01Cppmix 01
Cppmix 01Akira Takahashi
1K vistas11 diapositivas
Modern C++ Learning por
Modern C++ LearningModern C++ Learning
Modern C++ LearningAkira Takahashi
18.5K vistas12 diapositivas
cpprefjp documentation por
cpprefjp documentationcpprefjp documentation
cpprefjp documentationAkira Takahashi
1.3K vistas23 diapositivas
C++1z draft por
C++1z draftC++1z draft
C++1z draftAkira Takahashi
6.6K vistas67 diapositivas

Más de Akira Takahashi(20)

Cpp20 overview language features por Akira Takahashi
Cpp20 overview language featuresCpp20 overview language features
Cpp20 overview language features
Akira Takahashi891 vistas
C++14 solve explicit_default_constructor por Akira Takahashi
C++14 solve explicit_default_constructorC++14 solve explicit_default_constructor
C++14 solve explicit_default_constructor
Akira Takahashi7.3K vistas
C++14 relaxing constraints on constexpr por Akira Takahashi
C++14 relaxing constraints on constexprC++14 relaxing constraints on constexpr
C++14 relaxing constraints on constexpr
Akira Takahashi4.7K vistas
Leaning random using Boost Random por Akira Takahashi
Leaning random using Boost RandomLeaning random using Boost Random
Leaning random using Boost Random
Akira Takahashi6.2K vistas

Boost tour 1.60.0