> It's because their destructors are called automatically when going out of > scope, without the protection of a lock, which can cause undefined behavior > when there're other referencers from other threads.
I came to the same conclusion. You can `move` the ref though which sets it to `nil` causing its destructor to do nothing. The destructor only looks at the local variable then which is thread local, the fact that it does that outside of a `lock` environment does not matter. A dedicated annotation or a template would help to make it more convenient.