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 x86かLinux上でしか動作できないなど
コンパイラや環境に依存する機能は、採用されにくい。
同じことが、今後の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かなー。という話。
初期テーマが単純すぎた分、後半話が広がりすぎたような。