I've finally taken an interest in some C99 features, and now I'm having trouble understanding the relevant sections of the C99 draft.
I know that restrict is a promise that two restrict qualified pointers will not point to the same object, but my quest to find a more verbose and concrete explanation of what is and is not allowed has turned up little.
So my question is: Can someone provide a readable, understandable explanation of the details about restrict pointers, e.g. when I can and cannot use them, when it's UB, etc. The more verbose the better. I'm tired of making my head hurt looking at the C99 draft.
Thanks.