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.