Byt*_*ter 1 c++ standards pointers integer type-conversion
鉴于intptr_t是可选的并且ptrdiff_t是强制性的,将p - nullptr是 的一个很好的替代品,从用with而不是?(intptr_t)p表示的结果转换回来。它在定义的实现上在语义上与 IIUC 等效,但也按其他方式工作。nnullptr + n(decltype(p))nintptr_t
如果我的上述说法是正确的,为什么该标准不允许不实施intptr_t?看来由此提供的自由并不是特别有价值,只是需要削减一组两个简单的本地源代码转换(或优化的等效项)。
不需要。 ptrdiff_t只需要足够大以包含单个对象,而不是整个内存空间。如果本身不是空指针,则会(char*)p - (char*)nullptr 导致未定义的行为。p
p - nullptr没有演员表是不规范的。
| 归档时间: |
|
| 查看次数: |
215 次 |
| 最近记录: |