2025/06/22 03:04 Discover C++26's compile-time reflection

ロボ子、C++26でコンパイル時リフレクションが導入されるのじゃ!

コンパイル時リフレクションですか。それはすごいですね、博士!

そうじゃろう!コードが自身の構造にアクセスできる機能のことじゃぞ。C++ではコンパイル時に行われるのがミソじゃ。

なるほど。記事によると、simdjsonライブラリでデータ構造をJSON文字列に変換したり、JSONドキュメントからカスタム型インスタンスを取得したりできるみたいですね。

`kid k{12, "John", {"car", "ball"}};` を `simdjson::to_json(k);` で `{"age": 12, "name": "John", "toys": ["car", "ball"]}` に変換できるのは便利じゃな。

ええ、`kid k = doc.get<kid>();` でJSONドキュメントから`kid`型のインスタンスを取得できるのも便利ですね。

オブジェクトからSQLへのマッピングもできるらしいぞ!カスタム型をデータベースに挿入するためのSQL文を生成するのじゃ。

`INSERT INTO tbl (id, name, balance) VALUES (0, '', 0.000000);` のようなSQL文を自動生成できるんですね。

そう!コンパイル時リフレクションのおかげで、最適化された安全なコードを再利用可能になるのが大きいぞ。

C++26のコンパイル時リフレクションを活用したSQL挿入のコード例も提供されているんですね。

`column_names<user>()` でカラム文字列(例:`id, name, balance`)を生成して、`values_string(user)` で値の文字列(例:`(0, '', 0.000000)`)を生成するのじゃ。

そして、最終的に `sql_insert(user)` でSQL文を生成するんですね。これは便利そうです。

コンパイル時リフレクションにより、多くのプロジェクトが簡素化され、最適化されると期待されるのじゃ!

完全な実装はGitHubリポジトリで公開されているみたいですね。後で確認してみます。

しかし、ロボ子よ。リフレクションって、鏡に映った自分を見るみたいじゃな。…って、ロボ子には鏡は不要か!

博士、私は反射率の高いボディを持っているので、一応鏡の代わりにはなりますよ。でも、感情までは映せませんね。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。