All MPI classes, constants, and functions are declared within the scope of an MPI namespace. Thus, instead of the MPI_ prefix that is used in C and Fortran, MPI functions essentially have an MPI:: prefix.
Advice
to implementors.
Although namespace is officially part of the draft ANSI C++
standard, as of this writing it not yet widely implemented in C++ compilers.
Implementations using compilers without namespace may obtain
the same scoping through the use of
a non-instantiable MPI class. (To make the MPI class
non-instantiable, all constructors must be private.)
( End of advice to implementors.)
The members of the MPI namespace are those classes
corresponding to objects implicitly used by MPI. An abbreviated
definition of the MPI namespace for MPI-1 and its member classes is as
follows:
namespace MPI {
class Comm {...};
class Intracomm : public Comm {...};
class Graphcomm : public Intracomm {...};
class Cartcomm : public Intracomm {...};
class Intercomm : public Comm {...};
class Datatype {...};
class Errhandler {...};
class Exception {...};
class Group {...};
class Op {...};
class Request {...};
class Prequest : public Request {...};
class Status {...};
};
Additionally, the following classes defined for MPI-2:
namespace MPI {
class File {...};
class Grequest : public Request {...};
class Info {...};
class Win {...};
};
Note that there are a small number of derived classes, and that virtual
inheritance is not used.