Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Akira Takahashi
2,506 views
Boost Tour 1_58_0
Read more
5
Save
Share
Embed
Embed presentation
Download
Downloaded 45 times
1
/ 17
2
/ 17
3
/ 17
4
/ 17
5
/ 17
6
/ 17
7
/ 17
8
/ 17
9
/ 17
10
/ 17
11
/ 17
12
/ 17
13
/ 17
14
/ 17
15
/ 17
16
/ 17
17
/ 17
More Related Content
PDF
Boost tour 1.60.0
by
Akira Takahashi
PPTX
Flash lite概要
by
Toshiharu Shirai
PPTX
マスタリング バベル
by
道化師 堂華
PDF
オーム社開発部がTeXを使う3つのおもな理由
by
Keiichiro Shikano
PPTX
LT駆動開発08 - 無限のディスク領域を手に入れよう(妄想編)
by
Kazuya Matsubara
PPTX
Visual C++で使えるC++11
by
nekko1119
PDF
Boost tour 1_61_0 merge
by
Akira Takahashi
PDF
Boost tour 1.60.0 merge
by
Akira Takahashi
Boost tour 1.60.0
by
Akira Takahashi
Flash lite概要
by
Toshiharu Shirai
マスタリング バベル
by
道化師 堂華
オーム社開発部がTeXを使う3つのおもな理由
by
Keiichiro Shikano
LT駆動開発08 - 無限のディスク領域を手に入れよう(妄想編)
by
Kazuya Matsubara
Visual C++で使えるC++11
by
nekko1119
Boost tour 1_61_0 merge
by
Akira Takahashi
Boost tour 1.60.0 merge
by
Akira Takahashi
Similar to Boost Tour 1_58_0
PDF
Boost Tour 1.53.0
by
Akira Takahashi
PDF
Boost Overview
by
Akira Takahashi
PDF
Study3 boost
by
Kohsuke Yuasa
PDF
Boost Tour 1.50.0
by
Akira Takahashi
PDF
Boost Tour 1.48.0 diff
by
Akira Takahashi
PDF
Boost Tour 1_58_0 merge
by
Akira Takahashi
PDF
Boost Tour 1.53.0 merge
by
Akira Takahashi
PDF
Boost tour 1_44_0
by
Akira Takahashi
Boost Tour 1.53.0
by
Akira Takahashi
Boost Overview
by
Akira Takahashi
Study3 boost
by
Kohsuke Yuasa
Boost Tour 1.50.0
by
Akira Takahashi
Boost Tour 1.48.0 diff
by
Akira Takahashi
Boost Tour 1_58_0 merge
by
Akira Takahashi
Boost Tour 1.53.0 merge
by
Akira Takahashi
Boost tour 1_44_0
by
Akira Takahashi
More from Akira Takahashi
PPTX
Cpp20 overview language features
by
Akira Takahashi
PDF
Cppmix 02
by
Akira Takahashi
PPTX
Cppmix 01
by
Akira Takahashi
PDF
Modern C++ Learning
by
Akira Takahashi
PDF
cpprefjp documentation
by
Akira Takahashi
PDF
C++1z draft
by
Akira Takahashi
PDF
Boost tour 1_61_0
by
Akira Takahashi
PDF
error handling using expected
by
Akira Takahashi
PDF
Boost container feature
by
Akira Takahashi
PDF
C++14 solve explicit_default_constructor
by
Akira Takahashi
PDF
C++14 enum hash
by
Akira Takahashi
PDF
Multi paradigm design
by
Akira Takahashi
PDF
Start Concurrent
by
Akira Takahashi
PDF
Programmer mind
by
Akira Takahashi
PDF
Boost.Study 14 Opening
by
Akira Takahashi
PDF
Executors and schedulers
by
Akira Takahashi
PDF
Improvement future api
by
Akira Takahashi
PDF
C++14 variable templates
by
Akira Takahashi
PDF
C++14 relaxing constraints on constexpr
by
Akira Takahashi
PDF
C++14 binary literals
by
Akira Takahashi
Cpp20 overview language features
by
Akira Takahashi
Cppmix 02
by
Akira Takahashi
Cppmix 01
by
Akira Takahashi
Modern C++ Learning
by
Akira Takahashi
cpprefjp documentation
by
Akira Takahashi
C++1z draft
by
Akira Takahashi
Boost tour 1_61_0
by
Akira Takahashi
error handling using expected
by
Akira Takahashi
Boost container feature
by
Akira Takahashi
C++14 solve explicit_default_constructor
by
Akira Takahashi
C++14 enum hash
by
Akira Takahashi
Multi paradigm design
by
Akira Takahashi
Start Concurrent
by
Akira Takahashi
Programmer mind
by
Akira Takahashi
Boost.Study 14 Opening
by
Akira Takahashi
Executors and schedulers
by
Akira Takahashi
Improvement future api
by
Akira Takahashi
C++14 variable templates
by
Akira Takahashi
C++14 relaxing constraints on constexpr
by
Akira Takahashi
C++14 binary literals
by
Akira Takahashi
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に興味を持たれた方は、そちらのマージした資料 もぜひご覧ください。
Download