SlideShare a Scribd company logo
Enviar búsqueda
Cargar
Boost Tour 1_58_0
Denunciar
Compartir
Akira Takahashi
Programmer en Preferred Networks, Inc.
Seguir
•
5 recomendaciones
•
2,484 vistas
1
de
17
Boost Tour 1_58_0
•
5 recomendaciones
•
2,484 vistas
Denunciar
Compartir
Descargar ahora
Descargar para leer sin conexión
Akira Takahashi
Programmer en Preferred Networks, Inc.
Seguir
Recomendados
Boost tour 1.60.0 por
Boost tour 1.60.0
Akira Takahashi
2.1K vistas
•
12 diapositivas
Flash lite概要 por
Flash lite概要
Toshiharu Shirai
781 vistas
•
7 diapositivas
マスタリング バベル por
マスタリング バベル
道化師 堂華
1.5K vistas
•
39 diapositivas
オーム社開発部がTeXを使う3つのおもな理由 por
オーム社開発部がTeXを使う3つのおもな理由
Keiichiro Shikano
2K vistas
•
2 diapositivas
LT駆動開発08 - 無限のディスク領域を手に入れよう(妄想編) por
LT駆動開発08 - 無限のディスク領域を手に入れよう(妄想編)
Kazuya Matsubara
676 vistas
•
16 diapositivas
Visual C++で使えるC++11 por
Visual C++で使えるC++11
nekko1119
36.8K vistas
•
96 diapositivas
Más contenido relacionado
Similar a Boost Tour 1_58_0
Boost Overview por
Boost Overview
Akira Takahashi
2.2K vistas
•
17 diapositivas
Study3 boost por
Study3 boost
Kohsuke Yuasa
1.7K vistas
•
45 diapositivas
オープンソースプロジェクトのQAについて - LibreOfficeのケースから- por
オープンソースプロジェクトのQAについて - LibreOfficeのケースから-
Shinji Enoki
1.1K vistas
•
45 diapositivas
OSSライセンス入門 por
OSSライセンス入門
KageShiron
525 vistas
•
49 diapositivas
Github Actionsで始めるROS/ROS2のCI por
Github Actionsで始めるROS/ROS2のCI
Atsuki Yokota
2K vistas
•
16 diapositivas
Git & ブランチモデルで学ぶ バージョン管理入門 por
Git & ブランチモデルで学ぶ バージョン管理入門
kazuki kuriyama
274 vistas
•
86 diapositivas
Similar a Boost Tour 1_58_0
(8)
Boost Overview por Akira Takahashi
Boost Overview
Akira Takahashi
•
2.2K vistas
Study3 boost por Kohsuke Yuasa
Study3 boost
Kohsuke Yuasa
•
1.7K vistas
オープンソースプロジェクトのQAについて - LibreOfficeのケースから- por Shinji Enoki
オープンソースプロジェクトのQAについて - LibreOfficeのケースから-
Shinji Enoki
•
1.1K vistas
OSSライセンス入門 por KageShiron
OSSライセンス入門
KageShiron
•
525 vistas
Github Actionsで始めるROS/ROS2のCI por Atsuki Yokota
Github Actionsで始めるROS/ROS2のCI
Atsuki Yokota
•
2K vistas
Git & ブランチモデルで学ぶ バージョン管理入門 por kazuki kuriyama
Git & ブランチモデルで学ぶ バージョン管理入門
kazuki kuriyama
•
274 vistas
たまにはライセンスの話をしよう 20110211 por Yutaka Kachi
たまにはライセンスの話をしよう 20110211
Yutaka Kachi
•
2.1K vistas
【de:code 2020】 GitHub 新機能のご紹介(2020 年 5 月発表) por 日本マイクロソフト株式会社
【de:code 2020】 GitHub 新機能のご紹介(2020 年 5 月発表)
日本マイクロソフト株式会社
•
404 vistas
Más de Akira Takahashi
Cpp20 overview language features por
Cpp20 overview language features
Akira Takahashi
891 vistas
•
28 diapositivas
Cppmix 02 por
Cppmix 02
Akira Takahashi
675 vistas
•
7 diapositivas
Cppmix 01 por
Cppmix 01
Akira Takahashi
1K vistas
•
11 diapositivas
Modern C++ Learning por
Modern C++ Learning
Akira Takahashi
18.5K vistas
•
12 diapositivas
cpprefjp documentation por
cpprefjp documentation
Akira Takahashi
1.3K vistas
•
23 diapositivas
C++1z draft por
C++1z draft
Akira Takahashi
6.6K vistas
•
67 diapositivas
Más de Akira Takahashi
(20)
Cpp20 overview language features por Akira Takahashi
Cpp20 overview language features
Akira Takahashi
•
891 vistas
Cppmix 02 por Akira Takahashi
Cppmix 02
Akira Takahashi
•
675 vistas
Cppmix 01 por Akira Takahashi
Cppmix 01
Akira Takahashi
•
1K vistas
Modern C++ Learning por Akira Takahashi
Modern C++ Learning
Akira Takahashi
•
18.5K vistas
cpprefjp documentation por Akira Takahashi
cpprefjp documentation
Akira Takahashi
•
1.3K vistas
C++1z draft por Akira Takahashi
C++1z draft
Akira Takahashi
•
6.6K vistas
Boost tour 1_61_0 por Akira Takahashi
Boost tour 1_61_0
Akira Takahashi
•
1.4K vistas
error handling using expected por Akira Takahashi
error handling using expected
Akira Takahashi
•
3K vistas
Boost container feature por Akira Takahashi
Boost container feature
Akira Takahashi
•
3.4K vistas
Boost Tour 1_58_0 merge por Akira Takahashi
Boost Tour 1_58_0 merge
Akira Takahashi
•
4.8K vistas
C++14 solve explicit_default_constructor por Akira Takahashi
C++14 solve explicit_default_constructor
Akira Takahashi
•
7.3K vistas
C++14 enum hash por Akira Takahashi
C++14 enum hash
Akira Takahashi
•
8.1K vistas
Multi paradigm design por Akira Takahashi
Multi paradigm design
Akira Takahashi
•
3.2K vistas
Start Concurrent por Akira Takahashi
Start Concurrent
Akira Takahashi
•
22.8K vistas
Programmer mind por Akira Takahashi
Programmer mind
Akira Takahashi
•
10K vistas
Boost.Study 14 Opening por Akira Takahashi
Boost.Study 14 Opening
Akira Takahashi
•
4.1K vistas
Executors and schedulers por Akira Takahashi
Executors and schedulers
Akira Takahashi
•
7.4K vistas
Improvement future api por Akira Takahashi
Improvement future api
Akira Takahashi
•
7.9K vistas
C++14 variable templates por Akira Takahashi
C++14 variable templates
Akira Takahashi
•
5.7K vistas
C++14 relaxing constraints on constexpr por Akira Takahashi
C++14 relaxing constraints on constexpr
Akira Takahashi
•
4.7K vistas
Boost Tour 1_58_0
1.
Boostライブラリ一周の旅 Ver 1.54.0 ∼
1.58.0 高橋 晶(Akira Takahashi) faithandbrave@longgate.co.jp 2015/05/30 Boost.勉強会 #17 東京
2.
はじめに • Boostに興味はあるけど、触ったことがない • バージョンアップについていけなくなった •
Boostの全容を知りたい この発表は、以下のような方を対象にして、 Boost 1.58.0時点での、なるべく全てのライブラリの 概要を知ってもらうためのものです。
3.
Boostとは • 標準ライブラリに満足できなかった人たちが作っている、 C++の準標準ライブラリ。 • Boostから標準ライブラリに、多くの機能が採用されている •
普段のプログラミング全般で使える基本的なものから、 専門的なものまで、いろいろなライブラリがある。 • ライセンスはBoost Software License 1.0 • 無償で商用利用可能 • 著作権表記の必要なし • ソースコードの改変自由
4.
本日紹介するライブラリ • Log • TTI •
Type Erasure • Predef • Align • Type Index • Endian • Sort
5.
質問は随時受け付けます • この発表では、8ライブラリの紹介をします。 • 1ライブラリに付き、(ほぼ)ひとつのサンプルコードで 解説する、というスタイルです。 •
5∼10分ほど発表時間が余るようにしてあるので、 • 「ここがよくわからなかった」 • 「こんなこともできる?」 • 「ここはどうなっている」 • といった疑問があれば、随時質問してください。
6.
Log ロギングライブラリ。ログレベルの設定、フォーマット、ファイルサイズ や日付によるローテーションなど。 using namespace boost::log; add_file_log("log.txt"); ! //
infoレベル以上を出力し、それ以外は捨てる core::get()->set_filter( trivial::severity >= trivial::info ); ! BOOST_LOG_TRIVIAL(debug) << "デバッグメッセージ"; BOOST_LOG_TRIVIAL(info) << "情報メッセージ"; BOOST_LOG_TRIVIAL(error) << "エラーメッセージ"; BOOST_LOG_TRIVIAL(fatal) << "致命的なエラーメッセージ";
7.
TTI (Type Traits
Introspection) 型がどんな情報を持っているかコンパイル時に調べるライブラリ。 // メンバ関数mf()を持っているか判定するメタ関数を生成する BOOST_TTI_HAS_MEMBER_FUNCTION(mf) ! struct X { int mf(int, int); }; ! 型Xが、intを2つ受け取り、intを返すメンバ関数mf()を持っているか constexpr bool b = has_member_function_mf< X, int, boost::mpl::vector<int, int> >::value;
8.
Type Erasure 1/2 コンセプトで実行時多相性を表現するライブラリ。 「できること」を列挙して設定したany型に、それが可能な あらゆる型のオブジェクトを実行時に代入して使用できる。 using
namespace boost::type_erasure; any< boost::mpl::vector< copy_constructible<>, // コピー構築できること incrementable<>, // インクリメントできること ostreamable<> // ストリーム出力できること > > x(10); // int値をコピー(要件を満たしている型ならなんでもOK) ++x; std::cout << x << std::endl; // 「11」が出力される
9.
Type Erasure 2/2 コンセプトは、自分で定義できる。 //
1引数をとるpush_back()メンバ関数を持っていること、 // というコンセプトを定義する。 BOOST_TYPE_ERASURE_MEMBER((has_push_back), push_back, 1) ! // intを引数にとり、voidを返すpush_backを持っている、 // コンテナへの参照を受け取って操作する void append_many(any<has_push_back<void(int)>, _self&> container) { for(int i = 0; i < 10; ++i) container.push_back(i); }
10.
Predef コンパイラ、アーキテクチャ、OS、標準ライブラリなどの情報を 取得するライブラリ。 これらのマクロは必ず定義されるので、if文で使ってもいい。 // GCCかどうか #if BOOST_COMP_GNUC #if
BOOST_COMP_GNUC >= BOOST_VERSION_NUMBER(4,0,0) const char* the_compiler = "バージョン4以上のGNU GCC," #else const char* the_compiler = "バージョン4未満のGNU GCC" #endif #else const char* the_compiler = "GNU GCCではない" #endif
11.
Align アラインメント関係の情報を取得するメタ関数や メモリアロケータなど。 // 16バイトアラインメントでメモリ確保するアロケータを、 // vectorで使用する std::vector< char, boost::alignment::aligned_allocator<char,
16> > v(100);
12.
Type Index std::type_info/std::type_indexのBoost版。 RTTIの無効化や、型のデマングル名などに対応している。 using boost::typeindex::type_id; std::cout
<< type_id<int>().raw_name() << std::endl; std::cout << type_id<int>().pretty_name() << std::endl; i int (GCCの場合)
13.
Endian エンディアン操作のライブラリ。 エンディアン指定の算術型や、エンディアン変換の関数など。 using namespace boost::endian; ! little_uint8_t
a; // リトルエンディアンの8ビット符号なし整数型 big_uint8_t b; // ビッグエンディアンの(以下略) ! std::uint8_t x = 0; std::ifstream file(…); file.read(&x, sizeof(uint8_t)); ! x = big_to_native(x); // ビッグエンディアンのデータを、 // その環境のエンディアンに変換。
14.
Sort 範囲を並び替えるアルゴリズムのライブラリ。 巨大な配列をソートする際にstd::sort()よりも高速になる、 spreadsort()が含まれている。 using namespace boost::sort::spreadsort; ! std::vector<int>
v; // N >= 10,000 spreadsort(v.begin(), v.end()); • 整数型 • 浮動小数点数型 • 文字列型 この関数に指定できるのは、以下の型の範囲のみ:
15.
最近のBoost事情 1/2 • 開発のリポジトリが、SubversionからGitHubに移行しまし た。github.com/boostorg •
これは、ユーザーからの貢献を受け付けやすくするのが 主な目的です。 • pull requestすれば取り込んでもらえます。
16.
最近のBoost事情 2/2 • CMT
(Community Maintenance Team)という制度が 始まりました。 • Boostの各ライブラリは、だいたい作者が一人で メンテナンスしています。 作者が失踪して、メンテナンスされない時期がたまにあり ます。 • CMTに合意したライブラリは、何人かのBoost開発者が 適時メンテナンスします。 (pull requestを代わりに受け付けたり)
17.
本日の紹介はここまで • 今回の「Boostライブラリ一周の旅」では、 Boost 1.54.0から1.58.0までの更新を紹介しました。 •
発表では差分のみを紹介していますが、 これまで紹介したものをマージした資料も公開しています。 • 今回Boostに興味を持たれた方は、そちらのマージした資料 もぜひご覧ください。