有没有办法在模板类中告诉编译器?

时间:2020-10-03 20:29:05

标签: c++

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<>,我设法完成了自己想要的事情。

0 个答案:

没有答案