動機 Boost 1.75.0からPFRが追加された。通常の構造体のメンバ変数に対してあたかもstd::tupleであるかのようにget<N>でアクセスできる、という謎機能ライブラリである。 このようなライブラリの存在は以前から知ってはいたのだが、白状すると、その機能を知った時は疑問符が大量に噴出した。実装方法が全く想像できなかったのである。私はC++のプロでもなんでもない学生なので分からなくたって別に何も問題ないのだが、気になって仕方がなかったのでソースコードを読んでみることにした。諸事情あってBoostを使えない私でも、根本的構造を理解すれば自力で実装することもできるはずだ。 以下、C++17を想定している1。また以下で用いる"メンバ変数"は非staticなものを意味する。 解説 思いの外シンプルで、思いの外力技だった。よくもまあこんな実装方法を思いついたものだと感心するような、呆れる