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,