此声明在 g++ -pedantic -Wall(版本 4.6.3)中编译时没有警告:
std::size_t foo = -42;
不太明显的虚假是用 size_t 参数声明一个函数,并用一个负值调用它。这样的函数能否防止无意的否定论点(显示为无数的 quintillion,遵守 §4.7/2)?
不完整的答案:
只需将 size_t 更改为 (signed) long 就会放弃 size_t 的语义和其他优点。
将其更改为 ssize_t 仅仅是 POSIX,而不是标准。
将其更改为 ptrdiff_t 很脆弱,有时会损坏。
测试大值(高位设置等)是任意的。