This is the converting constructor for QWeakPointer from rvalues:
This is wrong, because doing value(other.value) may require access other.value's vtable (in the presence of virtual inheritance). We need to lock() and access only if it's safe.
Strangely, this protection is already employed by the converting assignment operator.
(Just so that I can quote this problem in commit messages.)