Pimpl は、多くの C++ コードのボイラープレートのソースです。それらは、マクロ、テンプレート、およびおそらく外部ツールの助けを少し組み合わせることで解決できるようなものに思えますが、最も簡単な方法が何であるかはわかりません. 持ち上げるのに役立つテンプレートを見てきましたが、それほど多くはありません。ラップしようとしているクラスのすべてのメソッドに対して転送関数を記述する必要があります。もっと簡単な方法はありますか?
make プロセスの一部として使用されるツールを想像しています。パブリックヘッダーを pimpl 化されたクラスにしたいので、ラップしたいクラス (pimpl 化されていない実装済み) をリストする pimpl.in などの入力ファイルを提供すると、そのファイルが調べられます。 pimpl クラスが生成され、'make install' 中にそれらのヘッダー (元のクラスのヘッダーではない) のみがインストールされます。問題は、本格的な C++ パーサーなしでこれを行う方法が見当たらないことです。外部ツールの仕事を簡単にする方法でクラスを書くことができるかもしれませんが、あらゆる種類のコーナーケース (テンプレート化されたクラスやテンプレート化されたメンバー関数など) を見逃すことになると確信しています。
何か案は?他の誰かがこの問題の解決策をすでに持っていますか?