假设我有以下课程:
template <class T, class U, class V> Foo
{
...
};
Run Code Online (Sandbox Code Playgroud)
模板参数具有不同的映射,因此我可以根据T是什么推断出其他模板参数U和V. 例如,如果T为double,则U和V将始终为某些类D1和D2,如果T为float,则U和V将始终为其他类F1和F2.
考虑到这一点,有没有一种方法可以只传递一个模板参数,并让编译器推导出另外两个参数?
我知道简单的答案就是将这些其他类也模板化并将模板参数T传递给它们,但我无法将这些类模板化(它们是由工具自动生成的).
理想情况下,我可以像这样使用typedef或#define:
typedef Foo<double> Foo<double, D1, D2>
typedef Foo<float> Foo<float, F1, F2>
Run Code Online (Sandbox Code Playgroud)
但是这些不能编译.我想知道是否有办法使用模板元编程或模板模板参数来解决这个问题,但我似乎无法将这些概念包裹起来,我有一种直觉,那里可能有更简单的答案.有人有什么想法吗?