C++ 为什么std::numeric\u limits::is\u integer对于易失性类型为false? std::numeric\u limits::is\u integer

C++ 为什么std::numeric\u limits::is\u integer对于易失性类型为false? std::numeric\u limits::is\u integer,c++,std,volatile,numeric-limits,C++,Std,Volatile,Numeric Limits,计算结果为“false” 但是为什么呢?volatile int不是仍然是整数类型吗?我想知道这里面是否有某种深刻的意义 UPD:编译器是来自Keil 4.72的armcc,它的计算结果不是false,而是true: std::numeric_limits<volatile int>::is_integer #包括 #包括 int main(){ std::cout这里您(或者,可能是您的编译器)错了,因为它应该是真的 从第页开始: 此外,每个cv合格版本都有专门化 每种算术类型,

计算结果为“false”

但是为什么呢?volatile int不是仍然是整数类型吗?我想知道这里面是否有某种深刻的意义


UPD:编译器是来自Keil 4.72的armcc,它的计算结果不是
false
,而是
true

std::numeric_limits<volatile int>::is_integer
#包括
#包括
int main(){
std::cout这里您(或者,可能是您的编译器)错了,因为它应该是真的

从第页开始:

此外,每个cv合格版本都有专门化 每种算术类型,与非限定专门化相同, e、 g.标准::数值限制,标准::数值限制和std::numeric_limits都提供了 相当于标准::数值限制

从第页:

标准专业:

int-true


可能是它的实现定义。哪个编译器?代码< >真/ <代码> GCC的在线版本,CLAN(LIbc++),英特尔,MSVC……如果你使用其中一个旧版本,考虑升级。“编译器是Keil 4.72的ARMCC”。我不相信这个编译器是完全符合标准的。它在最初的C++98标准中不存在,但是。如果你以后仍然键入
std::
,为什么要使用这个可怕的
名称空间std;
呢?@Quentin ideone默认添加了它。我忘了删除这一行。谢谢你指出:)我对ideone I感到不安那是可怕的行为。这是IDENN的最小问题。这很有趣。请告诉我STL是否以任何方式标准化?据我所知,C++标准没有描述它。@ AOMUM可以检查18.3.2“数字限制”部分。@ Amomum的东西从代码> STD::/COD> >是C++的一部分Standard@Amomum我个人一直认为“标准模板库”必须是标准的一部分…@ Amomum,C++标准不描述STL?
#include <iostream>
#include <limits>

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