为什么建议`std :: shared_ptr :: operator []`把`std :: ptrdiff_t`作为参数

时间:2016-10-06 19:39:03

标签: c++ c++17

According to the N4562 proposal, the newly proposed std::shared_ptr::operator[] takes in std::ptrdiff_t, which is a signed type

这与标准库中的每个索引操作符不一致。即使std::unique_ptr::operator[]需要std::size_t

这个决定的理由是什么?

1 个答案:

答案 0 :(得分:1)

可能这应该是指针界面统一。好的'用作数组的C指针接受负指数:p[-2]*(p - 2)相同;因此,ptrdiff_t自然会签名。