In reply to anon.

Yes, the Cisco blog system doesn't let you format the replies nicely -- thanks for posting the code on ideone; that made it significantly easier to read.

A few points...

1. You're using significantly more advanced C++ than I can comment on; we'll have to wait for Heiko to reply to your specific question.

2. FWIW, there's also MPI_Mprobe and MPI_Improbe that at least makes the alternate method of Probe/Iprobe "safe".

3. The topic of asynchronous progress is a hot topic these days. The *intent* is that applications do not need to call an MPI function just to get progress on ongoing non-blocking communications, but implementations aren't fully there yet.