c++ - 变量模板特化

标签 c++ templates

我有一个带状矩阵类,它继承自一个抽象矩阵类

template <typename T, std::size_t R, std::size_t B>
class BMatrix : public Matrix<T, R, R> {
    ...
};

我想要一个三对角矩阵类,我是怎么做到的(使用继承)

template <typename T, std::size_t R>
class TriMatrix : public BMatrix<T, R, 3> {
 ...
}

现在我不确定这是否是最好的做法(因为对于三对角矩阵有非常有效的方法,但一般带状矩阵却没有那么多)。虽然上述工作,但我想使用模板特化。但是我混合使用模板类型和变量。

有没有一种方法可以在不使用继承的情况下做到这一点?

比如像

template <typename T, std::size_t R, >
class BMatrix<T, R, 3> {
 ...
} typedef TMatrix ??

最佳答案

如果我没理解错的话 你可能有你的部分特化:

template <typename T, std::size_t R>
class BMatrix<T, R, 3> {
 // ...
};

和一个使用工具

template <typename T, std::size_t R>
using TriMatrix = BMatrix<T, R, 3>;

关于c++ - 变量模板特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57919697/

相关文章:

c++ - 蛮力方程求解

C++ 获取应用程序目录 *NIX

c++ - Mingw-x64 中的类型错误

c++ - SFINAE 并检测 C++ 函数对象是否返回 void

c++ - 当模板类的特化允许使用比声明的更多的模板参数时?

java - jnlp 模板文件中的通配符

c++ - 为什么 std::less 是一个仿函数?

python - 我怎样才能在 C++ 中实现这个结果?数组指向数组

C++ 17类模板参数类型推导——可读性

c++ - 制作需要模板的模板