テンプレートのトリックとboost::anyの両方を大量に含むライブラリを書いています。私は本質的にこれを持っている状況に遭遇しました:
boost::any a1, a2, a3, a4;
...そして、次のような関数を呼び出す必要があります。
template <typename A1, typename A2, typename A3, typename A4>
void somefunc (A1 a1, A2 a2, A3 a3, A4 a4);
わいせつにネストされた一連の if ステートメントに頼ることもできますが、10 個の異なる型を処理していると仮定すると、10,000 個の if ステートメントになります! ここでは Boost プリプロセッサが役立ちますが、これは依然として恐ろしい解決策です。
この種の狂気に頼らずに、boost::any の内容でテンプレート化された関数を呼び出すより良い方法はありますか? 私が知る限り、ありません。