MPI functions sometimes use arguments with a choice (or union) data
type. Distinct calls to the same routine may pass by reference actual
arguments of different types. The mechanism for providing such
arguments will differ from language to language.
For Fortran, the document uses type
to represent a choice
variable, for C, we use (void *).
MPI-Standard for MARMOT