Use T::size_type instead of size_t