use `weak_ptr`'s `lock()` method to allow case of no coarser level
On the coarsest level, element_->coarser_
is empty and constructing
a shared_ptr
from a weak_ptr
fails. The lock()
method returns
an empty shared_ptr
instead.
This fails when iterating over the hierarchy as the end of the iteration cannot be reached; the problem was previously described by @simon.praetorius 1.