[ San Francisco: ]
Beman: this is a complicated issue, and would like to move this to Open and await comment from Peter Dimov; we need very careful and complete rationale for any decision we make; let's go slow
Detlef: I think that shared_ptr should not be thread-safe.
Hans: When you create a thread with a lambda, it in some cases makes it very difficult for the lambda to reference anything in the heap. It's currently ambiguous as to whether you can use a shared_ptr to get at an object.
Leave in Open. Detlef will submit an alternative proposed resolution that makes shared_ptr explicitly unsafe.
A third option is to support both threadsafe and non-safe share_ptrs, and to let the programmer decide which behavior they want.
Beman: Peter, do you support the PR?
Peter:
Yes, I support the proposed resolution, and I certainly oppose any attempts to make shared_ptr thread-unsafe.
I'd mildly prefer if
[Note: This is true in spite of that fact that such functions often modify use_count() --end note]
is changed to
[Note: This is true in spite of that fact that such functions often cause a change in use_count() --end note]
(or something along these lines) to emphasise that use_count() is not, conceptually, a variable, but a return value.