
Hello, I don't have time for the full review, sorry. Just one bug report to help you: // Step 2: append the person to the m_persons. m_persons.push_back(person); BOOST_SCOPE_EXIT( (commit)(m_persons) ) { if(!commit) m_persons.pop_back(); } BOOST_SCOPE_EXIT_END The standard in section 23.1 "Container requirements" says that: "if an exception is thrown by a push_back() or push_front() function, that function has no effects" it means that the code above is buggy - in a case of exception in a copy constructor of Person it removes one element from a container. In other words, if before push_back m_persons.size() was 1, after scope_exit body execution m_persons.size() == 0. I'm not sure if I can vote with such a little effort involved, but if I could, I vote to accept this library into boost. Best regards, Oleg Abrosimov