拡張可能なアーキテクチャ用の C++ プラグイン フレームワークを設計 (ブレインストーミング) しています。各プラグインは、プラグイン自体によって実装されるインターフェイスを登録します。このようなフレームワークは比較的有能な組み込みデバイス (Atom/ARM など) で実行されている可能性があるため、STL と Boost を使用できます。
現時点では、インターフェイスが事前にわかっていて、プラグイン (動的ライブラリから読み込まれる) がそれらを実装するオブジェクトを登録する、同様のフレームワークを作成することができました。これらのオブジェクトは、ファクトリ メソッドによって必要に応じてインスタンス化され、メソッドが正しく呼び出されます。
今は、プラグインに新しいインターフェイスを登録させ (既存のものを実装するだけでなく)、フレームワーク ユーザーが利用できる API を拡張して、より柔軟にしたいと考えています。
std::map<std::string, FunctionPtr> を使用することを考えました。これは、私が読んだいくつかの記事とスタックオーバーフローの返信でも言及されています。残念ながら、異なるメソッド インターフェイスのケースをキャプチャしていないようです。
テンプレートのメタプログラミングや特性に関係があるのではないかと思いますが、正確にどのように機能するのかわかりません。誰でも助けることができますか?