The only time when the base address can be nil is if the buffer is empty. If the count is greater than zero, then the base address is guaranteed not to be nil.
Perhaps my actual question is where in the standard library are utilising this fact. Amongst the standard library functions that vent out UnsafeMutable<Raw>BufferPointer in one way or another:
None of them are using nil even if the the size is 0. It makes me wonder if I need to check for it at all.
There're also Unsafe<Raw>BufferPointer.init(start:count:) that can manually take nil. So I suppose I need to be wary of third-party initialising it that way, but such worry seems to be unneeded for standard library.
User code, including C code, is allowed to create buffers that use nil as the base address, regardless of whether the standard library utilizes the ability.