id summary reporter owner description type status milestone component version severity resolution keywords cc 9502 Unexpected behaviour of boost::mpi::request::test() ettersi@… Matthias Troyer "The following code snippet shows that boost::mpi::request::test() behaves differently depending on whether we send a message of built-in type or a message of custom type: {{{ struct custom_type { template void serialize(Archive& ar, const unsigned int version) {} }; [...] int i; auto req = comm.irecv(0,0,i); req.wait(); std::cout << ""Did we receive the built in type message: "" << bool(req.test()) << std::endl; custom_type c; auto req = comm.irecv(0,0,c); req.wait(); std::cout << ""Did we receive the custom type message: "" << bool(req.test()) << std::endl; }}} Output: {{{ Did we receive the built in type message: 1 Did we receive the custom type message: 0 }}} Similar behaviour is observed if you just repeatedly call req.test(): For the built-in type, the returned boost::optional switches from empty to non-empty once and then stays non-empty, whereas for the custom type it switches from empty to non-empty and in the next call goes back to empty again. For our application, it would be desirable if the custom type behaviour would be the same as the built-in type behaviour. If this is not possible or not advisable, then at least the documentation of boost::mpi::request should mention this difference in behaviour. " Bugs new To Be Determined mpi Boost 1.55.0 Problem request test