【发布时间】:2015-10-02 17:55:39
【问题描述】:
我想为模板类定义一个带有整数模板参数的函数,以便函数参数的数量取决于模板参数。这是一个例子:
template< class Coord, int dim >
class Point {
Coord mCoords[ dim ];
public:
void Set( /* I want exactly dim Coord arguments here. */ );
};
我想编译这段代码:
Point<double,2> pt2d;
pt2d.Set( 25, 32 );
Point<double,3> pt3d;
pt3d.Set( 25, 32, 100 );
这段代码失败了:
Point<double,2> pt2d;
pt2d.Set( 25, 32, 100 ); // Too many arguments
Point<double,3> pt3d;
pt3d.Set( 25, 32 ); // Too few arguments
现在,我可以手动将 Point 专门化为更小的维度,以拥有不相关的 Set 函数,但我发现基本上重复相同代码的做法是非 C++ 风格。此外,我不必专门针对 int 模板参数的每个可能值。
是否可以实现Point<Coord,dim>::Set() 函数,该函数将完全采用Coord 类型的dim 参数,而无需为dim 的每个值编写专门化代码?
【问题讨论】: