title: How to tell a C or a C++ compiler that pointers are not aliased
body: <p>I have function that receives an array of pointers like so:</p>
  
  <pre><code>void foo(int *ptrs[], int num, int size)
  { 
    /* The body is an example only  */
       for (int i = 0; i &lt; size; ++i) { 
         for (int j = 0; j &lt; num-1; ++j)
           ptrs[num-1][i] += ptrs[j][i];
       }
  }
  </code></pre>
  
  <p>What I want to convey to the compiler is that the pointers <code>ptrs[i]</code> are not aliases of each other and that the arrays <code>ptrs[i]</code> do not overlap. How shall I do this ? My ulterior motive is to encourage automatic vectorization.</p>
  
  <p>Also, is there a way to get the same effect as <code>__restrict__</code> on an iterator of a <code>std::vector</code> ? </p>