"By giving a pointer the restrict property, the programmer is promising the compiler that any data accessed through that pointer is not accessed in any other way. In other words, the compiler doesn’t have to worry about aliasing when using a pointer with the restrict property."
This is false. Entirely. Believing it will get you into trouble.
restrict is, as written in at least C99 and C11 (It's not in C++03 or C++11 standard, though compilers have imported the semantics from C99 to there to allow its use), is completely broken, in the sense that it doesn't do what you want (say two pointers can't alias).
This is being fixed in C++ (though no plans to fix in C), but as a completely trivial example:
void example1(restrict float *a, restrict float *b, float *c, int i) {
c[i] = a[i] + b[i];
}
In this example, a and b may alias, despite the restrict, because restrict says the storage must be modified:"During each execution of B, let L be any lvalue that has &L based on P. If L is used to access the value of the object X that it designates, and X is also modified (by any means), then the following requirements apply"
(the standard then gives the above as an example of how two pointers may be aliased with restrict)