3
std::numeric_limits<volatile int>::is_integer

评估为“假”。

但为什么?volatile int 不还是整数类型吗?我想知道这其中是否有某种深意。

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

4

2 回答 2

7

您(或者,可能是您的编译器)在这里是错误的,因为它应该是true

numeric_limits页面:

此外,每个算术类型的每个 cv 限定版本都存在一个特化,与非限定特化相同,例如 std::numeric_limits< const int >、std::numeric_limits< volatile int > 和 std::numeric_limits< const volatile int > 被提供并且等价于 std::numeric_limits< int >。

numeric_limits/is_integer页面:

标准专业:

...

诠释真

...

于 2016-12-27T11:46:26.893 回答
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

于 2016-12-27T11:45:21.643 回答