私はKd-Tree実装を持っています。これは、0より大きい任意の次元と任意の浮動小数点型(float、doubleなど)を受け入れるようにテンプレート化されています。このようなもの:
template <typename real, size_t dimensions> class KdTree
{
// stuff
}
また、まったく同じテンプレートレイアウトを持つ「ポイント」タイプが付属しています。ただし、このポイントタイプは、kd-treeクラスの外部からアクセスできる必要があります。これで、kdツリーコード内に一時的なポイントを作成する必要があるたびに、明示的に移動する必要がありますKdPoint<real, dimensions>
。これは面倒で、行が非常に長くなり、コードに何の価値も追加されません。
ポイントの値を暗黙的に想定し、そのクラスにも渡されるようにコンパイラーに指示する方法はありますreal
かdimensions
?ある意味で、2つのテンプレートリストをリンクします。入力するだけKdPoint
で、クラスが受け取ったテンプレート引数に基づいて、コンパイラがそこに何を入れるかを直接知ることができます。
それ以外の場合は、マクロを使用して後者を前者に明示的に展開する必要があります。