[mpi-21] Ballot 4 proposal: MPI::COMM_WORLD and MPI::COMM_SELF should be const

Jeff Squyres jsquyres at [hidden]
Mon Jan 21 09:40:39 CST 2008

This is not already on Bill's errata page.

Proposal: Make MPI::COMM_WORLD and MPI::COMM_SELF be "const".

Change MPI-2:B.2 p345:18 from

   // Type: MPI::Intracomm
   // Type: const MPI::Intracomm

Rationale: The COMM_WORLD and COMM_SELF C++ handles were erroneously  
not marked "const" because of the incorrect INOUT MPI handle parameter  
designation of the MPI_COMM_SET_ERRHANDLER, MPI_COMM_SET_ATTR, and  
MPI_COMM_SET_ERRHANDLER functions.  This caused the C++ bindings  
methods to not be const, resulting in compile errors if COMM_WORLD was  
const and you invoked any of the methods listed above (e.g.,  

The proper solution is to have all the MPI handle arguments be IN  
instead of INOUT (covered in another proposal) and therefore have the  
Set_* functions be const (also covered that other proposal).  Once  
that solution is in place, COMM_WORLD and COMM_SELF should be marked  
as "const".  Not that many other predefined MPI C++ handles are  
already const; some erroneously had their "const" designation removed  
in ballot 2 -- a different proposal seeks to restore their "const"  

NOTE: This proposal depends on the "change some INOUT parameters to  
IN" proposal.

Jeff Squyres
Cisco Systems

More information about the Mpi-21 mailing list