should be std::ptrdiff_t