Boost.勉強会 #18 が大阪で開催されたので行ってみた。 最近 C++ 書いてなかったけど、とくにメタプログラミング系が楽しみだった。以下、雑感 (適当)

会場

グランフロント大阪の Aiming というゲーム制作会社のセミナー室でした。エレベータがめちゃくちゃでかくて驚いた。下の階ではショールームや商業施設も兼ねているだけあって綺麗なオフィスビルだった

区間演算ライブラリ

http://www.slideshare.net/Enum_hack/cranberries-interval-library

  • Levy3 デモが面白い。HSPかなにかで描画してた?
  • あまり前半の話は理解できていないが、区間を使って精度を保証した大域的最適解(最小値,最大値)の探索がおもしろそう。数理計画法を詳しく勉強したいので C++ プログラムを見てみたい
  • 4 種類の Ordering 初めて聞いた, 全順序といった単語は論理と計算のしくみでしか見たことなかったが、なるほど区間に当てはまるなと思った。圏論の本でも Pre-Order が圏の例ででてきてた、順序おもしろい
  • スライド冒頭の 「C++ の会」 (Slack) に入った。とくに制約なく幅広く会員募集中の模様

pre-Kona

最新のC++標準化委員会の文書

  • C++17 で register 指定子を廃止
    • Duff's device のコード例でしか見たことなかった
  • TS (tech spec) ?
  • [[unused]] [[nodiscard]] はやく欲しい
    • debug モードのときしか使わない変数は release 時に警告でてしまうので欲しい。
    • gcc の __attibute__((unused)) って長すぎないですか。
  • multi-range-based for loop テンソル演算とかによさそう。STL2 のレンジ演算ライブラリも欲しい
  • lambda の this キャプチャあたらしい文法が微妙。ラムダ周りの文法はもろもろ設計ミスだと思う

タグ付き共用体

ナウなヤングにバカうけのイカしたタグ付き共用体

  • 簡単に再帰的に定義できる
  • static_if の実装
    • 不動点コンビネータ使う
    • Boost.Hana の話と結構かぶるとこあってよかった
  • 内部の storage は std::aligned_union ? 知らなかった。昔variantつくろうとしたとき再発明してた...
  • ラムダを使ったパターンマッチ (SFINAE) おもしろい
    • auto 引数のラムダで otherwise できる
  • 補足メモ:先週見た別の (C++11) variant 実装 https://github.com/abau/variant
  • 補足メモ:また別の boost::variant のパターンマッチ方法(不動点コンビネータ) https://gist.github.com/plasma-effect/13c471f3822d89ea0ac8

Boost.Hana

  • 事実上、既存Boostからは独立したライブラリ
  • Wandbox で試せる
  • swallow を使ったパラメータパックの評価順序指定
  • Applicative とか Foldable といったヘッダから利用者層が伺える
  • コンパイル時間が圧倒的に速いので積極的に使いたい
    • tuple や integral_constant も高速な独自実装
    • constexpr なしの型レベル計算
  • 補足メモ : 別の高速な tuple 実装例 shiro
  • Tuple って継承で実装するんだっけ

Proxygen

  • facebook 製の web フレームワーク
  • 珍しい C++ 製 (NVI の要求で生ポインタあり、不便? ), めっちゃ速い
    • Boost.Asio 的なもの (Folly ?) が独自実装されてる
    • 文字列のパースは利用者側が頑張る (Boost.Spirit, Karma 使ってた...)
  • http -> SPDY -> http/2 の進化が面白かった