template<int N>
class SquareMatrix
{
float elements[N][N];
float determinant()
{
//if (n == 2): simplest calculation
//else if (n == 3): simple calculation
//else: loooooong calculation
}
}
我想告诉编译器对N
使用具有不同值的不同路径,因此如果类型为SquareMatrix<2>
或SquareMatrix<3>
,它将使用更简单的计算,而if语句则为NO在运行时。
我也尝试使用#if
分支,但它们似乎不起作用。
#if N==2
//simplest calculation
#elif N==3
//simple calculation
#else
//loooooong calculation
#endif
这仍然会导致调用长计算。
上面的代码只是一个例子。
编辑并回答:借助std::enable_if<>
,我设法完成了自己想要的事情。