我有一个 Kd-Tree 实现,它被模板化为接受任何大于 0 的维度和任何浮点类型(浮点、双精度等)。像这样的东西:
template <typename real, size_t dimensions> class KdTree
{
// stuff
}
而且我有一个附带的“点”类型,它具有完全相同的模板布局。然而,这种点类型需要从 kd-tree 类外部访问。现在,每次我需要在我的 kd-tree 代码中创建临时点时,我都需要显式地 go KdPoint<real, dimensions>
,这很烦人,使我的行很长,并且对代码没有任何价值。
有什么办法可以告诉编译器隐式地假设任何值real
并dimensions
传递给点的类?以某种方式将两个模板列表链接在一起。这样我就可以输入KdPoint
,编译器将根据类接收到的模板参数直接知道要放什么。
否则我需要使用宏将后者显式扩展为前者,这很糟糕。