为什么 std::numeric_limits::is_integer 对于易失性类型是假的?
Why std::numeric_limits::is_integer is false for volatile types?
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
相关文章:
- 易失性sig_atomic_t的内存安全性
- C++易失性:保证 32 位访问?
- 避免易失性和非易失性成员函数的代码重复
- 当 2 个线程共享同一物理内核时,具有错误共享的易失性增量在发布中的运行速度比在调试中慢
- 如何访问常量易失性 std::array?
- 为什么在 C++20 中弃用易失性?
- 根据 MSVC,具有易失性成员的结构不再是 POD
- 是否允许编译器优化掉局部易失性变量
- 访问共享内存而不使用易失性、std::atomic、信号量、互斥锁和自旋锁
- 如何避免对无锁程序使用易失性?
- C++:易失性实例中的易失性成员函数 - 将数组分配给指针是无效的转换?
- g++ 6.3,avx 内联函数上的 Kahan 求和用易失性关键字进行序列化
- 为什么 std::numeric_limits::is_integer 对于易失性类型是假的?
- 为什么参数修饰符(即'const'或"易失性")不被视为函数类型或签名的一部分?
- C++变量定义中的易失性类型量词位置
- 嵌入式 C++:在 C++ 中初始化易失性类型结构
- std::is_trivially_copyable - 为什么易失性标量类型不能轻易复制
- 类型为"const CompareVPtrs"的表达式将丢失一些常量易失性限定符以调用
- 易失性结构与类型转换
- 如果我锁定变量,我是否必须将复杂类型标记为“易失性”?