次のような状況があります。
template <class T>
class Foo {
template <class V>
int bar();
};
(明確にするために、swig を使用してこのクラスを python に移植しています) 実際のテンプレート引数 T と V が関連しているために発生Foo<T1>
する問題bar<V1>
です。しかし、swig (または C++ コンパイラ) が、、など、考えられるすべての組み合わせを定義したふりをしている状況にいます。これは、Tn * Vn メソッドを提供する必要があることを意味します。対角線の組み合わせ Ti/Vi を除いて、それらのほとんどは例外を発生させます。Foo<T2>
bar<V2>
Foo<T1>::bar<V1>
Foo<T1>::bar<V2>
Foo<T2>::bar<V1>
これをスマートな方法で防ぐ方法はありますか?それとも、ほこりをかじってすべての組み合わせを実装する必要がありますか? 設計上の問題があると思われる場合、どのように解決しますか?