> And adding text at p. 3/41:
>
> \begin{users}
> If the user provided \const{MPI\_STATUS\_IGNORE} or
> \const{MPI\_STATUSES\_IGNORE} to the \MPI/ function that causes the
> \mpifunc{query\_fn} to be called, then \MPI/ will pass
> \const{MPI\_STATUS\_IGNORE} to the \mpifunc{query\_fn}. In this case,
> only the error code is returned (return value in C and C++ and in
> \mpiarg{IERROR} in Fortran). Implementors of a \mpifunc{query\_fn}
> should be careful to test for the case where \mpiarg{status} is
> \const{MPI\_STATUS\_IGNORE} since accessing it as a normal status
> handle is erroneous.
> \end{users}
Err... we have a problem with C++. There is no C++
MPI::STATUS[ES]_IGNORE. So passing this in to the
Grequest::Query_function (the user callback) will be problematic.
The way that it is handled in C++ is to have a second [overloaded]
function that simply does not contain the MPI::Status argument.
A possible solutions for this case:
Have two typedefs for the query_fn, one with the MPI::Status, and one
without. The one that the user passes in will be used appropriately (the
implementation will have to save a flag about which to use)
{+} Jeff Squyres
{+} squyres@cse.nd.edu
{+} Perpetual Obsessive Notre Dame Student Craving Utter Madness
{+} "I came to ND for 4 years and ended up staying for a decade"