2

我创建了一个矩阵类,使用

static_assert(std::is_arithmetic<T>::value,"");

检查模板类型是否为算术类型。所以我尝试了

Matrix<char> matrix1(3,3); // ctor takes number of rows and columns

它有效。不使用 char 类型调用 static_assert 函数。这是正常的?char 被视为算术类型?

4

2 回答 2

5

参考

如果 T 是算术类型(即整数类型或浮点类型),则提供等于 true 的成员常量值。对于任何其他类型,值为 false。

char是整数类型,所以答案是truechar适合 a 的小整数通常被解释为特定字符编码空间中的代码点这一事实是次要的。

于 2012-08-18T11:35:22.547 回答
0

是的,它和其他任何整数(int、long、short)一样是普通整数。这也是 C(++) 中将其用于算术的一种常见做法,例如,将数字转换为其对应的可打印字符,您可以编写

char printable = digit + '0';
于 2012-08-18T11:44:08.847 回答