void remove(const CommImplPtr& comm);
CommImplPtr iprobe(int type, bool (*match_fun)(void*, void*, CommImpl*), void* data);
CommImplPtr find_matching_comm(CommImpl::Type type, bool (*match_fun)(void*, void*, CommImpl*), void* this_user_data,
const CommImplPtr& my_synchro, bool done, bool remove_matching);
void remove(const CommImplPtr& comm);
CommImplPtr iprobe(int type, bool (*match_fun)(void*, void*, CommImpl*), void* data);
CommImplPtr find_matching_comm(CommImpl::Type type, bool (*match_fun)(void*, void*, CommImpl*), void* this_user_data,
const CommImplPtr& my_synchro, bool done, bool remove_matching);