我正在实现一个 N 维数组库。考虑这段代码:
template<int Rank, class Type>
class Array {
{
public:
// constructor for vectors, valid when Rank==1
Array(int dim0, Type val = Type());
// constructor for matrices, valid when Rank==2
Array(int dim0, int dim1, Type val = Type());
...
}
问题是如果Type == int
,编译器会抱怨构造函数调用不明确(例如,Array<1,int>(1,1)
)。是否有这样的技巧enable_if
使编译器忽略不匹配的构造函数Rank
?(请不要使用 C++11)
谢谢