我有一个简单的矩阵类,如下所示:
template <int m, int n>
class matrix {
public:
std::enable_if<std::is_same<matrix, matrix<4,4>>::value, void>
translate(float x, float y, float z) {
// Do stuff
}
private:
float mat[m * n];
};
我希望std::enable_if
仅当我实例化 a 时才使该功能可用matrix<4,4>
,但似乎这是错误的。
int main() {
matrix<4, 3> mat3;
mat3.translate(1.0f, 1.0f, 1.0f);
return 0;
}
上面的代码编译没有错误。我究竟做错了什么?
我知道我可以简单地将 astatic_assert(m == 4 && n == 4)
放入函数体中,但我正在寻找一种更简洁的解决方案,并希望在此过程中了解有关模板的一些知识。