On Monday, 28 October 2019 at 19:23:30 UTC, jmh530 wrote:
they are all const. That there is only one mutable way to access data sounds like restrict to me.

Well, if you add the constraint that there also is no const way to access the data.

But unique ownership is stricter than «restrict», which only guarantees that there is no aliasing (overlapping) between the pointed-too-memory. No guarantees for there not being other pointers to the same memory.

It is basically only significant when accessing arrays, like when you are calling a function with two windows onto the same array. Proving that the two windows don't overlap is not always possible without a performance loss.

Being able to tell the compiler that there is no overlap makes sense when doing inline updates in an array, so that the compiler can restructure instructions and use SIMD. Without restrict you would often have to write the single array element before reading another (as they could point to the same memory location).

BUT «restrict» is very crude. It would probably be better to provide more narrow guarantees (e.g. «the offset between the two pointers is at least 16 bytes»).

Reply via email to