考虑以下代码片段:
int x = 10;
std::cout << "Is Integral = " << std::is_integral_v<decltype(x)> << std::endl;
int & y = x;
std::cout << "Is Integral = " << std::is_integral_v<decltype(y)> << std::endl;
这里x
被视为整数类型但y
实际上不是。
有没有人能解释一下为什么会这样?
考虑以下代码片段:
int x = 10;
std::cout << "Is Integral = " << std::is_integral_v<decltype(x)> << std::endl;
int & y = x;
std::cout << "Is Integral = " << std::is_integral_v<decltype(y)> << std::endl;
这里x
被视为整数类型但y
实际上不是。
有没有人能解释一下为什么会这样?
std::is_integral
来自文档的整数类型的定义:x
的类型是int
- 上面提到的类型之一。但是
y
的类型是int&
( int 的引用),而不是 。它不是返回int
的类型之一。std::is_integral
true
如果您想检查引用所指的类型是否为整数,您可以使用
std::remove_reference_t
从类型中“剥离”引用:输出:
– 宋元瑶