我使用
创建了一个Matrix类static_assert(std::is_arithmetic<T>::value,"");
检查模板类型是否为算术类型。所以我尝试了
Matrix<char> matrix1(3,3); // ctor takes number of rows and columns
它有效。不使用char类型调用static_assert函数。这是正常的? char看起来像算术类型?
答案 0 :(得分:5)
来自reference:
如果T是算术类型(即整数类型或浮点类型),则提供成员常量值等于true。对于任何其他类型,值为false。
char
是一个整数类型,所以答案是true
。适合char
的小整数通常解释作为特定字符编码空间中的代码点是次要的。
答案 1 :(得分:0)
是的,它和其他任何一个(int,long,short)一样正常。这也是C(++)中用于算术运算的常见做法,例如: G。要将数字转换为相应的可打印字符,您可以编写
char printable = digit + '0';