标签: 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::shared_ptr::operator[]
std::ptrdiff_t
这与标准库中的每个索引操作符不一致。即使std::unique_ptr::operator[]需要std::size_t。
std::unique_ptr::operator[]
std::size_t
这个决定的理由是什么?
答案 0 :(得分:1)
可能这应该是指针界面统一。好的'用作数组的C指针接受负指数:p[-2]与*(p - 2)相同;因此,ptrdiff_t自然会签名。
p[-2]
*(p - 2)
ptrdiff_t