我有以下情况。
template <class T>
class Foo {
template <class V>
int bar();
};
(我正在使用 swig 将此类移植到 python,以澄清)我遇到的问题是因为实际的模板参数 T 和 V 是相关的,即Foo<T1>
应该有bar<V1>
,Foo<T2>
应该有bar<V2>
等等。但是,我处于 swig(或 C++ 编译器)假装定义了所有可能的组合的情况,即,Foo<T1>::bar<V1>
等等。这意味着我必须提供 Tn * Vn 方法,其中大多数会引发异常,但对角线组合 Ti/Vi 除外Foo<T1>::bar<V2>
Foo<T2>::bar<V1>
有没有办法以一种聪明的方式防止这种情况发生,还是我应该尘埃落定并实施所有组合?如果您认为我有设计问题,您将如何解决?