0 should be a permitted value for the second parameter (to start_lifetime_as_array). This would make code interacting with this function easier to write and less error prone.
Proposed change:
Remove paragraph 5.
Adjust paragraph 6 such that equivalence is maintained only if the previous precondition is met. If n is 0 then a pointer which compares equal to p is returned but which may only be used in the manner which past-the-end pointers may be used.
0 should be a permitted value for the second parameter (to start_lifetime_as_array). This would make code interacting with this function easier to write and less error prone.
Proposed change:
Remove paragraph 5. Adjust paragraph 6 such that equivalence is maintained only if the previous precondition is met. If n is 0 then a pointer which compares equal to p is returned but which may only be used in the manner which past-the-end pointers may be used.