
To approach it from another perspective, ask 100 C++ programmers the question: "What happens when an unhandled exception is thrown?" I'm willing to bet that the vast majority will say "abnormal program termination", without even considering that the thread triggering the throw might be relevant.
For what it's worth I'm increasing becoming convinced that you're right, so my position's changed if that makes any difference when weighing up where we are with this discussion. One thing I'm still very clear on: if this change is made we need a big bold statement to that effect in the docs, it's bound to bite somebody, particularly those folks who run automated tests. Another query: couldn't we make whether exceptions get swallowed a runtime parameter? As in: if(swallow_exceptions) { try{ users_thread_proc(); }catch(...){ whatever(); } } else users_thread_proc(); I realise this doesn't fit into the current API, but we are considering rewriting/improving Boost.Threads right? John.