array: use size_t for extent