title: How to use MPI_Irecv?
body: <p>From OpenMPI docs: C++ syntax</p>
  
  <pre><code>Request Comm::Irecv(void* buf, int count, const Datatype&amp;
      datatype, int source, int tag) const
  </code></pre>
  
  <p>So I imagine I do something like: </p>
  
  <pre><code>MPI::Request req;
  req = MPI_Irecv(&amp;ballChallenges[i], 2, MPI_INT, i, TAG_AT_BALL, MPI_COMM_WORLD);
  </code></pre>
  
  <p>But it complains: </p>
  
  <pre><code>error: too few arguments to function ‘int MPI_Irecv(void*, int, MPI_Datatype, int, int, MPI_Comm, ompi_request_t**)’
  </code></pre>
  
  <p>Seems like I am missing <code>ompi_request_t**</code>, but its not documented? Tried </p>
  
  <pre><code>MPI_Irecv(&amp;ballChallenges[i], 2, MPI_INT, i, TAG_AT_BALL, MPI_COMM_WORLD, &amp;req);
  </code></pre>
  
  <p>But fails with </p>
  
  <pre><code>error: cannot convert ‘MPI::Request*’ to ‘ompi_request_t**’ for argument ‘7’ to ‘int MPI_Irecv(void*, int, MPI_Datatype, int, int, MPI_Comm, ompi_request_t**)’
  </code></pre>
  
  <p>So whats with the <code>ompi_request_t</code> part? </p>