次のような単純なものが必要だとします。
特殊なアルゴリズム (コンパイル時に特殊化された) の 1 つをランダムに選択し、このアルゴリズムを処理するコア アルゴリズムがあります。これらの特殊なアルゴリズムは、ファンクターを通じて実装されます。
問題は次のとおりです。コンパイル時にビルドされるコンテナーを実装する方法です。コアアルゴリズムは最初にこのコンテナーのサイズを確認できます (「4 つのアルゴリズムを取得しました -> アルゴリズム 0-3 をランダムに選択する必要があります」)そして、このコンテナーでファンクターを実行できます (「ランダムに選択された 2 -> コンテナー内の 3 番目のファンクターを処理する」)。
できるだけ簡単に実装するにはどうすればよいでしょうか。可能だと思います。
奇妙に繰り返されるテンプレートイディオムとの関連はありますか? (ウィキ リンク) Boost::Fusion
を使用する簡単な方法はありますか? (公式ドキュメント)
編集:すべてのアルゴリズムはコアアルゴリズムで使用されます。使用パターン (乱数) は実行時の決定です (したがって、コンパイル時のランドは必要ありません)。アルゴリズムは、安全にアクセスするために、ファンクターのコンテナーとこのコンテナーのサイズを認識している必要があります。