> [`std::vector<...>::size_type`] makes the code way less readable (which is IMNSHO all that matters)

I don't understand.  Are you saying that correctness is unimportant?  It is an unequivocal fact that `std::vector<>::size()` returns a `std::vector<>::size_type`.  Libstdc++ (and maybe libc++ for all I know) *happens* to contain the equivalent of
```C++
template <class T>
vector {
public:
    typedef size_t size_type;
};
```
but I *really* don't think we should rely on that fact.

> in the end it amounts to the same thing...

At present.  With the current implementations.  May not be true tomorrow.