Why does proposed `std::shared_ptr::operator[]` take `std::ptrdiff_t` as an argument : <p><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4562.html#memory.smartptr.shared.obs">According to the N4562 proposal, the newly proposed <code>std::shared_ptr::operator[]</code> takes in <code>std::ptrdiff_t</code>, which is a signed type</a>.</p>

<p>This is inconsistent with every indexing operator in standard library. Even <code>std::unique_ptr::operator[]</code> takes <code>std::size_t</code>.</p>

<p>What's the rationale for this decision?</p>
