Not sure if `unsigned long` is a `size_t` in MSVC