より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

C++勉強会 #7

仕事でC++も触るので参加するぞと思っていたのですが、やっと第7回で参加できました。

caddi.connpass.com

途中参加の私はお構いなしで、特に勉強会の説明もなしにスタート。

まあ、参加していなかった私がよくない。結構コアな話。

テーマは「type erasureの続きとexpression templates」

type erasure

anyの実装についての内部的な仕組みについて。

blog.cryolite.net

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を使うというもの。

下記サイトの説明が補足としてわかりやすいです。

blog.cryolite.net

応用

ただ

将来的にはC++23では静的リフレクションという代替機能が登場するので必要なくなる。

Subversion

余談だが、熱く語られたのが、Subversionはオリジナルの開発者が去っていき、メンテナーたちに細々と運営されているという話。

Gitに負けてしまったという。

自社でもレガシーなコードだろうがGitに移行するとなっていたが、英断だったか。