On Jul 31, 2019, at 4:31 AM, Joseph Schuchart via mpi-forum 
<mpi-forum@lists.mpi-forum.org> wrote:

> Should we mark in the interface the fact that the MPI_Count overloads are 
> only available in C11? I'm thinking about something similar to cppreference's 
> distinction between C/C++ standard versions, e.g.,
> ```
> int MPI_Send(const void *buf, MPI_Count count, MPI_Datatype datatype, int 
> dest, int tag, MPI_Comm comm) [>C11|C++]
> ```

These are exactly the kind of discussions that I'd like to have before the 
September meeting: what is the best way to render the output to convey the 
information in an aesthetic way?  I'm terrible at this kind of stuff.


That being said, I would not want to mark anything as "C++", because the MPI 
spec does not explicitly support C++ at all.  The text that will support this 
ticket will only have an Advice to Implementors for those implementations who 
want to continue to have an <mpi.h> that supports both C and C++.  Per feedback 
we got in the Virtual Meeting last week, the advice is to *not* use C++ 
polymorphism, and, instead, treat C++ as a complier that does not support C11 
_Generic (i.e., the MPI_Count-enabled version of MPI_Foo() will simply not be 
available -- see Froozle).

The rationale here is that if an implementation supports C++ polymorphism, 
there are three options:

1. The standard needs to make official statements about C++, which basically 
re-introduces formal C++ support in the MPI spec (which is a Big Deal)
2. PMPI-enabled tools will need to support non-standard C++ polymorphism in 
order to guarantee that they can intercept all MPI APIs when the application is 
written in C++
3. PMPI-enabled tools do not support intercepting all MPI APIs when the 
application is written in C++

None of those 3 options are attractive.

Jeff Squyres

mpi-forum mailing list

Reply via email to