Boost.勉強会 #10 のディスカッションのまとめメモ

テーブルキーパーになったので、まとめときます。
メモは写メしたけど落書きすぎて読めない。

初期テーマは、「よく使うBoostライブラリを出し合おう」でしたが、
なんだかしらないうちに、C++1yだのC++2xだの話が広がっていったかんじです。

まず、よく使うBoostライブラリは、
・Thread
・Asio
・Spirit
・Lambda
Phoenix
・Any
・Range
・PP
が上がりました。

Boost.Thread
C++11のstd::threadでも代用できるよね。
・けど、std::threadは、現在対応しているコンパイラgcc、clang、VC2012と限られるね。
・std::threadはインタラクションポイントがない。Boost.Threadにはある。
・moveに対応している。Boost.Moveではない。
・boost 1.55 から、V3になる。1.50でもV3の機能を使おうと思えば使える。

Boost.Asio
・とにかくサンプルがわかりにくい。
・リファレンスがわかりやすいので、それを見よう。
・魔導書vol.2で、牛さんが記事を書いてるのでそれ見ようね。

Boost.Spirit
・パーサジェネレータとして優秀。
C++の型チェックがきく。
・Boost.Asio と逆でこっちはリファレンスがわかりにくい。
C++11のregexよりこっちの方がいいかも。

Boost.Lambda
C++11のラムダ式で最早いいかも。

ここらへんで、BoostとC++11の機能の差分リストがほしいねという声が。

Boost.Phoenix
コンパイル時間がブーストする☆

Boost.Any
・(とくに話はしなかった)

Boost.Range
・OvenやRangeExtentionなど、ほかにいいライブラリがあるよ。

Boost.PP
・(とりあえず上げとけ的な流れで出てきた)

そのほかに、SandBoxから、
・Boost.Backtrace
・Boost.Cfunction
が上げられました。

ここで、なぜ、これらが正式に採用されないのかという話になり、
便利なものでもなかなか追加できないんだよ、という話に。
Boost.Backtraceは、Windows x86Linux上でしか動作できないなど
コンパイラや環境に依存する機能は、採用されにくい。
同じことが、今後のC++の規格にも言える。
C++の規格の場合はなおのことで、標準仕様として追加してしまうと
あとで削ることができない。


次に、C++11で追加された機能をピックアップしようという話。
・auto
ラムダ式
・move
regex
・type traits
・tuple
・random
・bind
・function
・chrono
・nullptr → C++03でもほしいよね。
・初期化子リスト
・文字列リテラル(u8とか)
・UDL

強化された機能。
・スマートポインタ
・for_each
・SFINAE
・hash_map


最後に、次期規格でほしい機能。
・mpl
GC
・concept
C++1yに入って欲しいけど、バグフィックスだけで、
実際入るとしたら、C++2xかなー。という話。


初期テーマが単純すぎた分、後半話が広がりすぎたような。