C++のSTLのstd::vectorのコードを見ていたら、
コンテナに格納可能な最大数を返してくれるメソッドmax_sizeが以下のようになってたんですけど、

size_t max_size() const
{ return size_t(-1) / sizeof(_Tp); }

どうしてこれで求められるかが理解できません。
教えてください。お願いします。