This whole issue came up recently in the MPI Forum (the const-ness [or not] of the MPI C++ objects). I am a fervent believer that all the predefined C++ MPI objects should be const and that any MPI function that allows predefined handles as an argument should be a const argument.

This got deferred to MPI 2.2, however, meaning that there won't be resolution in the near future. :-\

FWIW, I have File::Set_errhandler "fixed" in the OMPI SVN trunk (for the upcoming v1.3 series) to allow MPI::FILE_NULL, in anticipation of the Forum agreeing to make everything sane. :-)


On Mar 20, 2008, at 12:54 PM, Eidson, Eric D wrote:
Hello,

OpenMPI 1.2.5 and earlier do not let you set the Errhandler for
MPI::FILE_NULL using the C++ bindings.

[You would want to do so because, on error, MPI::File::Open() and
MPI::File::Delete() call the Errhandler associated with FILE_NULL.]

With the C++ bindings, MPI::FILE_NULL is a const object, and Set_errhandler
is apparently a non-const function -- so compiling fails.

Eric

--

#include <mpi.h>

int
main()
{
 MPI::Init();

 MPI::Errhandler oldeh = MPI::FILE_NULL.Get_errhandler();
 MPI::FILE_NULL.Set_errhandler(MPI::ERRORS_THROW_EXCEPTIONS);
 MPI::FILE_NULL.Set_errhandler(oldeh);

 MPI::Finalize();
}



_______________________________________________
users mailing list
us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users


--
Jeff Squyres
Cisco Systems

Reply via email to