为什么对于volatile类型,std :: numeric_limits :: is_integer为false?

时间:2016-12-27 11:40:23

标签: c++ std volatile numeric-limits

std::numeric_limits<volatile int>::is_integer

评估为&#39; false&#39;。

但为什么呢?不是一个整数类型的volatile int吗?我想知道这里是否有某种深刻的含义。

UPD:编译器是来自Keil 4.72的armcc

2 个答案:

答案 0 :(得分:7)

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

来自numeric_limits页面:

  

此外,每个cv限定版本都存在专门化   每种算术类型,与不合格的专业化相同,   例如的std :: numeric_limits&LT; const int&gt;,std :: numeric_limits&lt;挥发物   int&gt;和std :: numeric_limits&lt; const volatile int&gt;是提供和   相当于std :: numeric_limits&lt; int&gt;。

来自numeric_limits/is_integer页面:

  

标准专业化:

     

...

     

int true

     

...

答案 1 :(得分:1)

好吧,它不评估为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