仕事でC++も触るので参加するぞと思っていたのですが、やっと第7回で参加できました。
途中参加の私はお構いなしで、特に勉強会の説明もなしにスタート。
まあ、参加していなかった私がよくない。結構コアな話。
テーマは「type erasureの続きとexpression templates」
type erasure
anyの実装についての内部的な仕組みについて。
Expression Templates
以下のようなことができる技法。
- 式のキャプチャー
- 遅延評価
- DSL
class vector { double[] elements = new double[1000]; // オペランドの実装 }
vector a,b,c,d; auto result = a + b + c + d;
としてしまうと重い。
auto result = a[100] + b[100] + c[100] + d[100];
と同じような計算にしたいという場合に遅延評価される性質を使ってExpression Templatesを使うというもの。
下記サイトの説明が補足としてわかりやすいです。
応用
- 正規表現
- パーサー
- 行列計算
ただ
将来的にはC++23では静的リフレクションという代替機能が登場するので必要なくなる。
Subversion
余談だが、熱く語られたのが、Subversionはオリジナルの開発者が去っていき、メンテナーたちに細々と運営されているという話。
Gitに負けてしまったという。
自社でもレガシーなコードだろうがGitに移行するとなっていたが、英断だったか。