bool i2c = std::is_convertible<int, char>::value;
bool c2i = std::is_convertible<char, int>::value;
bool f2i = std::is_convertible<float, int>::value;
std::cout << std::boolalpha;
std::cout << i2c << '\n'; //prints true
std::cout << c2i << '\n'; //prints true
std::cout << f2i << '\n'; //prints true
当这些类型在进行精度损失的类型转换时,它们看起来是不可转换的。因此,我无法理解为什么所有上述情况的输出都必须是true
。或者我们不应该使用std::is_convertible
来比较原始类型吗?
int
转换为char
或将float
转换为int
。 你为什么认为你不能做到呢? - SirGuydouble d = 0; char c = d;
,你的编译器是否会报错?如果会,错误信息是什么?如果不会,你认为为什么double
不能转换为char
? - user743382