为什么 std::numeric_limits::is_integer 对于易失性类型是假的?

Why std::numeric_limits::is_integer is false for volatile types?

本文关键字:类型 于易失 integer numeric std limits is 为什么      更新时间:2023-10-16
std::numeric_limits<volatile int>::is_integer

计算结果为"假"。

但是为什么?易失性 int 不是仍然是整数类型吗?我想知道这其中是否有某种深刻的含义。

UPD:编译器来自Keil 4.72

你在这里是(或者,可能是你的编译器)错了,因为它应该是真的

从numeric_limits页面:

此外,每个符合 cv 标准的版本都存在专用化 每种算术类型,与不合格的专业相同, 例如 std::numeric_limits和 std::numeric_limits提供并且 相当于 std::numeric_limits

从numeric_limits/is_integer页面:

标准专业:

整 真

好吧,它不计算false,它计算为true

#include <iostream>
#include <limits>
int main() {
std::cout << std::boolalpha << std::numeric_limits<volatile int>::is_integer << std::endl;
return 0;
}

https://ideone.com/y3ne6Y