桜、抹茶、白、日記

名古屋市在住のC++使いのcoderの日記だったもの。

Effective C++ 読書会 vol.11 に参加

参加しました。

Effective C++ 読書会 vol.11 大阪〜第7章特別編〜
http://partake.in/events/fafca87c-78fd-416f-abbb-ae4346ec15ad

Effective C++ 原著第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

Effective C++ 原著第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

どうも会社に第3版はおきっぱだったようで、会場近くのジュンク堂で本を新たに購入して参加しました。
参加した理由としては、日本有数のC++エキスパートの方が集まる場でしたし、個人的にあまりtemplateを使ったプログラミングは出来ていないのでまずはその基礎知識を得る事でした。

開会

18人位が参加。
[twitter:@HappyLuckyAkira]さんや[twitter:@cpp_akira]さんが両隣。更にその隣に[twitter:@suikaba]さん、[twitter:@decimalbloat]さんがいらっしゃってとても濃いエリアでした。

Effective C++ 読書 第1部

templateに関する項。

    • 41項 - 暗黙のインタフェースとコンパイルポリモーフィズムを理解しよう
      • signatureではなくsyntaxで定義する事によって実装が楽になる
      • boostのドキュメントではsignatureで表現するのではなく、満たすべき式で書かれているものがある。
      • C++の規格書はconceptの影響を受けた書き方に変わっている
    • 42項 - typenemeの2つの意味を理解しよう
      • C++11ではtemplateの外でもtypenameが付けられるようになった(ビルドエラーにならないようになった)
      • 質問 by [twitter:@cpp_akira]さん
    • 43項 - テンプレート化された基底クラス内の名前へのアクセス方法を知る
      • ビルドエラーになったらとりあえず「this->」付けておけ。
      • 質問
        • typenameする方法とthis->とでどちらを使っているか?
      • 回答
        • 使い易い方を使えば?

お昼休み

以下のメンバーでお昼。

カレー&パスタ+サラダ&ドリンクバーのお店で、カレーは直ぐ出てきたけどパスタは出てくるのが遅くてちょっと焦った。
雑談の中でプログラミング魔導書のvol.3の話題が出ていて発売が楽しみです。

セッション

[twitter:@cpp_akira]さん
    1. テンプレート入門
      • C++11から可変引数テンプレートが導入された
        • 任意個数のテンプレート引数を扱える
      • デフォルトテンプレート引数
        • C++03まではクラステンプレートのみだったが、C++11からは関数テンプレートにも対応。
      • エイリアステンプレート
        • 特殊化は出来ない
    2. どんな場面で使うか
      • GitHubにサンプルコード有り
    3. テンプレート技法
      • あまり使えないもの
        • 式テンプレート
        • CTRD
    4. 未来
      • C++1y
        • 「y」は「7」の意味合い
      • C++22
        • conceptはここで入るかも?
        • 関数の戻り値のautoによる型推論
          • λ関数ベースの実装
[twitter:@dasyprocta]さん

個人的にはテンプレートの使い所について段階的に説明されていたのは良かった。ただ声が聞こえにくかったのと延々と解説が続いたので力尽きて寝てしまった・・・。

Effective C++ 読書 第2部

    • 44項 - パラメータに依存しないコードはテンプレートから外に出そう
    • 45項 - 「すべての互換型」を受け取る為にメンバ関数テンプレートを使おう
    • 46項 - 型変換をさせたいのなら、メンバでない関数をクラステンプレートの中で定義しよう
      • P.239 operator* の戻り値にconstが付いているのは、C++11ではmoveの利用を阻害するので最適化に影響があるかも知れない。
      • 質問
        • テンプレートの実装をcppファイルで行うか?
      • 回答
        • テンプレート特殊化により特定の型でのみテンプレートを許可するような場合にはそうする。逆を言えばそういった意図が無ければそんな事はしない。
      • 何故 operator* はfriend関数なのか
        • ADL経由でしか参照できない関数とする為。
          • ADL(Argument-dependent name lookup):関数の呼び出し時の引数に渡したデータ型で呼び出される関数を探索する仕組み
    • 47項 - 型の情報に関してはtraitsクラスを使おう
    • 48項 - TMPを意識しよう
      • P.251 1990年代のTMPの"発見"?
        • STLC++98で規格化された。少なくともそれより前に"発見"されている。
        • 詳細について知りたければ以下の本にて解説されている

質疑応答

閉会

イベントに参加しての感想を一言ずつ話して終了。

懇親会

不参加

参加しての感想等

もうかれこれ10年位C++やっていますが、未だにテンプレートを使いこなせていないのと、独学では(自分で勝手に決めた)限界があったので、とても勉強になりました。少しテンプレートの理解が深まったので、書籍の写経なりで技術を磨いていかないとなぁ。

あと会場のグリーさんはとても福利厚生が充実していましたね。個人的には職場にあったタスクボードの内容も気になりました。


それから勉強会とは無関係ですがこの本が良さそうだった。

ノンデザイナーズ・デザインブック [フルカラー新装増補版]

ノンデザイナーズ・デザインブック [フルカラー新装増補版]